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()用来进行这种转换?
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.