我是一名研究生,正在对公司墙上的一些公开 Facebook 评论进行一些研究。我只对频率感兴趣,而不是评论的文本。
所以我正在考虑做一个正则表达式来匹配我需要的东西,但我还不太擅长正则表达式。(另外,我只有文本格式的评论,而不是 html - 它们都在文本文件中。)
这意味着我需要解析每条评论的最后一行。我使用以下正则表达式:
(January|February|March|April|May|June|July|August|September|October|November|December \d+ at \d+:\d+[ap]m)|(Yesterday at \d+:\d+[ap]m)|(\d+ hours ago)|(About an hour ago) \D*?(\d+)
一些样本:
September 5 at 8:40pm · Like · 23
Yesterday at 5:35am · Like
10 hours ago · Like · 2
6 hours ago · Like
我希望得到:
第 1 组:或者:[月] [日] 或昨天:上午/下午或 # 小时前第 2 组:喜欢的次数
Python中的代码(对不起,如果它不是超级Python-esque):
import re
for line in open('comments.txt','r'):
strPat = '(January|February|March|April|May|June|July|August|September|October|November|December \d+ at \d+:\d+[ap]m)|(Yesterday at \d+:\d+[ap]m)|(\d+ hours ago)|(About an hour ago) \D*?(\d+)'
pat1 = re.compile(strPat, line)
m = re.match(pat1, line)
if m:
print m.group(1), m.group(2)
一些示例输出:
September 5 at 8:40pm None
None None
首先,它没有捕获“8 小时前”部分。其次,它似乎没有捕捉到任何情况下的点赞数。我敢肯定我的正则表达式模式有些奇怪。任何帮助将不胜感激。