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

时间:2010-03-15 10:41:22

标签: python regex

我有文本文件,比如

FILED AS OF DATE:       20090209
DATE AS OF CHANGE:      20090209

我需要使用FILED AS OF DATE:找到该位置并阅读日期。我知道如何使用python字符串。但使用正则表达式看起来更酷:)

顺便问一下,如何解析日期?

谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这是你需要的吗?

/FILED.*([0-9]{4})([0-9]{2})([0-9]{2})$/

搜索FILED然后搜索任何内容然后解析分为3组的日期。

答案 2 :(得分:1)

您实际上不需要使用RE

关于解析日期,您可以使用datetime.strptime(date_string, format)。然后,如果需要,您可以将其从datetime.datetime转换为datetime.date

或者使用python-dateutil parse() function,这在日期(时间)值的格式不固定时非常方便。