我的文本文件,像閱讀的文本字段在Python中使用正則表達式
FILED AS OF DATE: 20090209
DATE AS OF CHANGE: 20090209
我需要使用FILED AS OF DATE:
找到位置並讀取日期。我知道如何使用python字符串。但使用正則表達式似乎更酷:)
順便說一句,如何解析日期?
謝謝!
我的文本文件,像閱讀的文本字段在Python中使用正則表達式
FILED AS OF DATE: 20090209
DATE AS OF CHANGE: 20090209
我需要使用FILED AS OF DATE:
找到位置並讀取日期。我知道如何使用python字符串。但使用正則表達式似乎更酷:)
順便說一句,如何解析日期?
謝謝!
#!/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
獲取數字。好主意,但我認爲添加一點點評論會使帖子更好! – Khelben 2010-03-15 11:27:11
這是你所需要的?
/FILED.*([0-9]{4})([0-9]{2})([0-9]{2})$/
搜索FILED然後任何事情然後解析日期分成3組。
你真的不需要使用RE
這一點。
關於解析日期,您可以使用datetime.strptime(date_string, format)。然後,如果需要,您可以將其從datetime.datetime
轉換爲datetime.date
。
或者使用python-dateutil parse() function,當日期(時間)值的格式不固定時,這非常方便。
*「但使用正則表達式看起來更酷」* - 哎!如果你擔心你的代碼不夠「酷」,那麼你可能會遇到其他問題;-) – Joey 2010-03-15 10:44:12
我認爲_may_在這裏沒有必要:) – extraneon 2010-03-15 10:47:19
沒有人說:「人們有問題,他們決定使用常規表達式,現在他們有兩個問題「 – batbrat 2010-03-15 10:52:59