【发布时间】:2018-08-11 19:55:13
【问题描述】:
我有一个包含大量文本的文件。其中一些看起来像这样:
X-DSPAM-Processed: Fri Jan 4 18:10:48 2008
X-DSPAM-Confidence: 0.6178
X-DSPAM-Probability: 0.0000
Details: http://source.sakaiproject.org/viewsvn/?view=rev&rev=39771
Author: louis@media.berkeley.edu
Date: 2008-01-04 18:08:50 -0500 (Fri, 04 Jan 2008)
New Revision: 39771
Modified:
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/bundle/sitesetupgeneric.properties
bspace/site-manage/sakai_2-4-x/site-manage-tool/tool/src/java/org/sakaiproject/site/tool/SiteAction.java
Log:
BSP-1415 New (Guest) user Notification
我只需要提取遵循此模式的日期:
2008-01-04 18:08:50 -0500
这是我尝试过的:
import re
text = open('mbox-short.txt')
for line in text:
dates = re.compile('\d{4}(?P<sep>[-/])\d{2}(?P=sep)\d{2}\s\d{2}:\d{2}:]\d{2}\s[-/]\d{4}')
print(dates)
text.close()
我得到的回报是几百:
\d{4}(?P<sep>[-/])\d{2}(?P=sep)\d{2}\s\d{2}:\d{2}:]\d{2}\s[-/]\d{4}
【问题讨论】:
-
re.compile 只编译模式,搜索使用 dates.search(line)
-
这似乎不起作用,或者我不确定要替换什么。我是编程的初学者,在他们不教的地方上 Python 课,他们只是让我们“做”。我需要输出只是列表中的日期字符串。
-
@ArchivistG。所有这些日期是否都出现在以“日期:”开头的行上?因为如果他们这样做了,根本就不需要使用正则表达式:简单的字符串操作就足够了。
-
@ArchivistG。事实上,更好的解决方案是使用mailbox 模块,它可以解析mbox 文件。没有必要重新发明轮子。