我正在尝试将格式为YYYYMMDD
的日期转换为MM/DD/YYYY
,因为它正在从数据库中读取并写入Excel文件。使用Perl我会做以下事情:
var=~s/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])/$5$6\/$7$8\/$1$2$3$4/;
请记住,这一切都发生在读取数据库信息的“for row in rows”循环结构中。
非常感谢任何帮助。
答案 0 :(得分:4)
而不是使用正则表达式,您可以使用pythons datetime
module。
或者您可以将两者合并,但是您想要它,但这将是一种更清晰的方式来修改日期格式。 python是一种语言,其清晰度和易读性与效率同等重要。看下面的代码可以看出我正在修改一个日期戳,而使用正则表达式有时候还不太清楚。
读取datetime元素,然后根据需要编写它:
>>> from datetime import datetime
>>> datestring = '20121212' # 2012 / 12 /12
>>> datetime.strptime(datestring, '%Y%m%d').strftime('%m/%d/%Y')
'12/12/2012'
答案 1 :(得分:2)
我会选择简单的字符串操作 - 当然不会那么清楚......
>>> s = '20121213'
>>> '/'.join( (s[4:6], s[6:], s[:4]) )
'12/13/2012'
而不是:
>>> re.sub(r'(\d{4})(\d{2})(\d{2})', r'\2/\3/\1', s)
'12/13/2012'
如果你要坚持使用像你在下面发布的那样,那么
dateFormatted = row [“TRADE_DATE”] dateFormatted = re.sub(r'(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)(\ d)',r'\ 5 \ 6 / \ 7 \ 8 / \ 1 \ 2 \ 3 \ 4' , dateFormatted) - 用户名1901341 5分钟前
然后你可以(ab)使用字符串格式
>>> '{4}{5}/{6}{7}/{0}{1}{2}{3}'.format(*s)
'12/13/2012'
答案 2 :(得分:1)
你不需要使用正则表达式 - Python不会像Perl那样鼓励它们 - 但是你当然可以使用它:
import re
re.sub(r'(\d{4})(\d{2})(\d{2})', r'\2/\3/\1', datestring)
答案 3 :(得分:0)
我认为你可以在这里完成它,没有正则表达式:
>>> s = '20121225'
>>> conv = '/'.join((s[6:8], s[4:6], s[0:4]))
>>> conv
'25/12/2012'