Найти несколько слов из нескольких файлов PDF с Python - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь написать скрипт 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")

Так что этот скрипт работает, но не совсем так, как я хочу. Он будет искать только «Дэвид», но не всю строку терминов, чего я и хочу. И еще раз, я хочу, чтобы это работало для нескольких файлов PDF, а не только для 1, в котором я должен предоставить имя файла

Любая помощь, высоко ценимая

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Ваш поисковый запрос неверен. re.search(kTerm,Text) будет интерпретировать kTerm как регулярное выражение. Вы определяете kTerm как "David, Final, End, Score, Birthday, Hello Ben", который ищет точное вхождение David, Final, End, Score, Birthday, Hello Ben. Вы можете заменить "," символом трубы ("|"), который похож на или. Если вы делаете

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

, что составляет "David|Final|End|Score|Birthday|Hello Ben", вы ищете либо «Дэвид», либо «Финал», либо «Конец», либо ...

0 голосов
/ 30 октября 2019

Когда я запускаю приведенный выше код, мне нужно прокрутить вывод, чтобы найти строки, в которых находятся слова. Я ожидаю, что строки, содержащие слова, будут напечатаны или сохранены как отдельный файл, или страница, содержащая только одну строку, будет сохранена в отдельном файле pdf или txt. Заранее спасибо за помощь

...