如何使用re.search语法匹配pdf文档中的关键字列表?

时间:2019-08-10 18:52:36

标签: python regex python-3.x

我正在寻找使用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变量包含多个关键字,如果匹配的话还是会检索多个页码?

1 个答案:

答案 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是单词边界(以确保匹配项是完整单词而不是单词的一部分)。