使用正则表达式在Python中读取文本字段
我有一个文本文件,内容像这样:
FILED AS OF DATE: 20090209
DATE AS OF CHANGE: 20090209
我需要找到包含 FILED AS OF DATE:
的位置,并读取日期。我知道怎么用Python的字符串来做到这一点。不过用正则表达式来做似乎更酷一点 :)
顺便问一下,怎么解析日期呢?
谢谢!
3 个回答
1
这就是你需要的吗?
/FILED.*([0-9]{4})([0-9]{2})([0-9]{2})$/
搜索“FILED”,然后是任意内容,接着解析日期,分成三组。
1
其实你并不需要用到 RE
这个东西。
如果你想解析日期,可以使用 datetime.strptime(date_string, format)。这样你就可以把日期从 datetime.datetime
转换成 datetime.date
,如果需要的话。
另外,你也可以使用 python-dateutil 的 parse() 函数,这个在你的日期(时间)格式不固定的时候特别好用。
3
#!/usr/bin/env python
import datetime, fileinput, re
for line in fileinput.input():
if 'FILED AS OF DATE' in line:
line = line.rstrip()
dt = datetime.datetime.strptime(line, 'FILED AS OF DATE: %Y%m%d')
# or with regex
date_str, = re.findall(r'\d+', line)
dt = datetime.datetime.strptime(date_str, '%Y%m%d')
print dt.date()
示例:
$ ./finddate.py input.txt
输出:
2009-02-09