Python过滤和从列表中选择

时间:2014-01-22 07:23:27

标签: python list filtering

我需要创建一个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()函数能够分隔文本文件中的所有条目。我不确定的是如何遍历这个新列表并且只接受日期。我如何过滤仅过滤日期?

1 个答案:

答案 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