我正在尝试以下方法:从每篇文章中仅打印出位于第4行或第5行的月份。我试图这样做的方式是:
m = 'January', 'February', 'March', 'April', 'May' 'June', 'July', 'August', 'September', 'October', 'Novemeber', 'December'
for i in range(len(sections)):
date = re.search(r"[m]",sections[i][1:5])
print(date)
第一个问题。我不知道如何在列表“m”中搜索正则表达式。第二个问题,我想把我的搜索只集中在每篇文章的第0-5行。
答案 0 :(得分:2)
假设:
>>> txt='''\
... Line 1
... Line 2
... Line 3
... Line 4
... Line 5 April'''
您可以使用i
获取j
到.splitlines()[i:j]
行:
>>> txt.splitlines()[0:3]
['Line 1', 'Line 2', 'Line 3']
现在只需构建一个找到月份的模式。请务必使用\b
查找完整的字词匹配:
>>> months=['January', 'February', 'March', 'April', 'May' 'June', 'July', 'August', 'September', 'October', 'Novemeber', 'December']
>>> pat=re.compile("|".join([r"\b{}\b".format(m) for m in months]), re.M)
然后在目标线切片中搜索您的图案:
>>> pat.search("\n".join(txt.splitlines()[0:5]))
<_sre.SRE_Match object at 0x107a2a9f0>
如果要捕获它出现的行,您可能会执行THIS
之类的操作答案 1 :(得分:1)
这取决于哪些部分,我认为它是一个多行字符串:
import re
sections = 'some sections here'
dates = re.findall('\\b'+'\\b|\\b'.join(m), ' '.join(sections.splitlines()[0:4]))