如果删除下划线:datestr = line.replace('_', '')
那么只有两种日期格式需要处理:yyyymmdd或{}。
此外,每个日期字符串将由6到8位数字组成,您可以
使用regex模式查找r'\d{8}|\d{6}':
^{pr2}$
然后可以使用date = DT.datetime.strptime(datestr, '%d%m%y')
或者date = DT.datetime.strptime(datestr, '%Y%m%d')
模式r'\d{8}|\d{6}'还将捕获一些可能与日期无关的字符串,例如表示无效日期的数字。我们可以通过使用try..except来捕获{}来处理这些情况。在import re
import datetime as DT
foo = """\
an_2011_02_12_azar.mp3
20121112_Marcel.mp3
cdani_270607.mp3
lica_07_03_15.mp3
an_2011_13_12_azar.mp3
"""
for line in foo.splitlines():
datestr = line.replace('_', '')
datestr = re.search(r'\d{8}|\d{6}', datestr).group()
try:
# %y matches 2-digit years
date =