使用Python从多个PDF文件中查找多个单词

时间:2019-10-21 10:13:46

标签: python-3.x pypdf2

我正在尝试编写一个Python脚本,该脚本将加载多个PDF文件,然后搜索特定的单词。

我有一个脚本,该脚本将使用1个单词,然后尝试在1个PDF中找到它,就像该单词一样,它是由我自己提供的。我希望将此脚本扩展为多个单词和PDF。我知道实际所需的最终脚本将需要os模块中的其他方法,但是我对Python的了解有时有些粗略。

尽管我认为这将是一项基本任务,但Google一直让我失望,而且似乎我在问一个特定的问题太多了,因此为什么选择我。

到目前为止我所拥有的:

import PyPDF2 as PDF #import pdf module 
import re

p = PDF.PdfFileReader("UserJoe.pdf")

# get number of pages
NumPages = p.getNumPages()

#define keyterms; David, Final, End, Score, Birthday, Hello Ben

kTerm = "David, Final, End, Score, Birthday, Hello Ben"

#extract text and do the search
for i in range(0, NumPages):
    PageObj = p.getPage(i)
    print("Looking through page " + str(i))
    Text = PageObj.extractText()
    Result = re.search(kTerm,Text)

    if Result:
         print(f"{kTerm} found")
    else:
         print("0")

因此,此脚本有效,但实际上并非我想要的那样。它将仅搜索“ David”,而不搜索整个字符串,这正是我想要的。为了重申这一点,我希望它适用于多个PDF文件,而不仅仅是1个,我必须提供文件名

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

您的搜索词是错误的。 re.search(kTerm,Text)会将kTerm解释为正则表达式。您将kTerm定义为"David, Final, End, Score, Birthday, Hello Ben",它正在寻找David, Final, End, Score, Birthday, Hello Ben的确切出现。您可以将管道符号(“ |”)替换为“,”,例如or。如果你这样做

kTerm = "David, Final, End, Score, Birthday, Hello Ben".replace(", ", "|")

"David|Final|End|Score|Birthday|Hello Ben"就是您搜索“ David”或“ Final”或“ End”或...

答案 1 :(得分:0)

运行上面的代码时,我需要在输出中滚动查找找到单词的行。我希望包含单词的行将被打印或保存为单独的文件,或者仅包含行的页面将被保存在单独的pdf或txt文件中。感谢您的提前帮助