将datetime.date的表示形式转换为pandas.Timestamp的表示形式

Bat*_*man 2 python regex datetime pandas

我已经将一堆代码从使用datetime.date对象转换为使用Timestamps.代码由大量单元测试覆盖,这意味着我需要将所有实例转换"datetime.date(2016, 12, 20)"为"Timestamp(2016-12-20)".
简单的解决方案是:

re.sub(r"datetime.date\((\d{4}), (\d{1,2}), (\d{1,2})\)", r"Timestamp(\1-\2-\3)", string)
Run Code Online (Sandbox Code Playgroud)

在某些情况下哪种方法很好.问题是date使用一个或两个数字来显示月份和日期,而Timestamp总是使用两个.因此,如果日期是datetime.date(2016, 1, 1)我会回来"Timestamp(2016-1-1)"但正确的表示应该是"Timestamp(2016-01-01)".

一些字符串实例还包含多个子字符串匹配.

有没有办法可以re.sub()用来进行这种转换?

vks*_*vks 5

string = "datetime.date(2016, 2, 20)"
def repl(matchobj):
    return "Timestamp(%s-%s-%s)"%(matchobj.group(1), matchobj.group(2).zfill(2), matchobj.group(3).zfill(2))

print re.sub(r"datetime.date\((\d{4}), (\d{1,2}), (\d{1,2})\)", repl, string)
Run Code Online (Sandbox Code Playgroud)

输出:

Timestamp(2016-02-20)

使用zfill宽度2.