我需要创建一个python函数来打开文件,读入文本然后在Python GUI上输出包含日期的任何条目。有效日期的示例包括“1/30/10”,“1/30/2010”,“1-30-2010”,“01-30-2010”,“30.1.2010”,“30。1. 2010” ,和“2010-01-30。”它应该具有很少的误报,例如“13010”,“01302010”或“30-30-10”作为日期。
到目前为止我所拥有的是
import sys
def main():
infile = open('testdate.txt', 'r')
for line in infile:
words = line.split()
for date in words:
if ____ in date:
print date
infile.close()
main()
我知道line.split()
函数能够分隔文本文件中的所有条目。我不确定的是如何遍历这个新列表并且只接受日期。我如何过滤仅过滤日期?
答案 0 :(得分:0)
找出所有可能的格式并尝试解析这些格式。这可能会有所帮助:
>>> from datetime import datetime
>>> possible_fmts = ["%m/%d/%y","%m/%d/%Y","%m-%d-%y","%m-%d-%Y","%d.%m.%Y","%d. %m. %Y","%Y-%m-%d"]
>>> test_text = "1/30/10,1/30/2010,1-30-2010,01-30-2010,30.1.2010,30. 1. 2010,2010-01-30"
>>> for date_token in test_text.split(','):
for fmt in possible_fmts:
try:
print datetime.strptime(date_token, fmt)
break
except ValueError, e:
pass
2010-01-30 00:00:00
2010-01-30 00:00:00
2010-01-30 00:00:00
2010-01-30 00:00:00
2010-01-30 00:00:00
2010-01-30 00:00:00
2010-01-30 00:00:00