使用正则表达式在Python中读取文本字段

1 投票
3 回答
620 浏览
提问于 2025-04-15 20:26

我有一个文本文件,内容像这样:

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

撰写回答