我正在尝试将格式为YYYYMMDD
to的日期转换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”循环结构中。
任何帮助将不胜感激。
而不是使用正则表达式,您可以使用 pythonsdatetime
模块。
或者您可以将两者结合起来,但这是您想要的,但这将是修改日期格式的更清晰的方法。python 是一门清晰易读与效率同等重要的语言。查看下面的代码可以看到我正在修改日期戳,而使用正则表达式有时很不清楚。
读取 datetime 元素,然后根据需要编写它:
>>> from datetime import datetime
>>> datestring = '20121212' # 2012 / 12 /12
>>> datetime.strptime(datestring, '%Y%m%d').strftime('%m/%d/%Y')
'12/12/2012'
我会选择简单的字符串操作——当然同样清楚......
>>> 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) – user1901341 5 分钟前
然后你可以(ab)使用字符串格式
>>> '{4}{5}/{6}{7}/{0}{1}{2}{3}'.format(*s)
'12/13/2012'
你不需要使用正则表达式——Python 不像 Perl 那样鼓励它们——但你当然可以使用一个:
import re
re.sub(r'(\d{4})(\d{2})(\d{2})', r'\2/\3/\1', datestring)
我想你可以在这里简单地得到它,没有正则表达式:
>>> s = '20121225'
>>> conv = '/'.join((s[6:8], s[4:6], s[0:4]))
>>> conv
'25/12/2012'