我正在寻找使用re.search功能,该功能将使用关键字列表来提取页码,其中文本包含这些关键字
# Get number of pages
NumPages = file.getNumPages()
# Enter string to be searched here
String = 'Acquisition'
mylist =[]
for i in range(0, NumPages):
PageObj = file.getPage(i)
Text = PageObj.extractText()
if re.search(String,Text):
mylist.append(str(i))
print(mylist)
该代码列出了当前文本中包含关键字“ acquisition”的页码。但是,我希望string变量包含多个关键字,如果匹配的话还是会检索多个页码?
答案 0 :(得分:1)
使用集看起来很方便,因为它会自动对re.findall
找到的结果进行重复数据删除,并且您可以轻松地将它们与关键字进行比较,而无需采用在帐户中找到它们的顺序:
keywords = {'identifiable', 'intangible'}
pat = re.compile(r'\b(' + (r'|'.join(keywords)) + r')\b')
mypages = []
for i in range(0, NumPages):
Text = file.getPage(i).extractText().lower()
if set(pat.findall(Text)) == keywords:
mypages.append(i)
print(mypages)
第二行建立一个正则表达式模式:与关键字\b(identifiable|intangible)\b
的交替。
|
的意思是“ OR”和\b
是单词边界(以确保匹配项是完整单词而不是单词的一部分)。