@bagda2808

Почему не работает скрипт на python?

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

В этом файле реализована функция ,которая отвечает за нахождение слова в pdf-файле и за возвращение слова с номером страницы, на котором оно находится
AgroBook.pdf - pdf- файл
#pyForPdf
import PyPDF2


def func_pdfChecker(name):
    with open('AgroBook.pdf', 'rb') as pdf_file:
        pdf_reader = PyPDF2.PdfReader(pdf_file)
        for page_num in range(len(pdf_reader.pages)):
            pdf_page = pdf_reader.pages[page_num]
            text_page = pdf_page.extract_text()
            if name in text_page:
                text_done = f'{name} {page_num + 1}'
                return text_done
                break


Этот файл отвечает за получение требуемых слов для поиска из текстового файла ListOfNames.txt(в этом файле список слов) и вызова функции func_pdfChecker
(Запись в отдельный текстовый файл пока не реализована)
#main
import pyForPdf

list_of_names = []
with open('ListOfNames.txt', encoding='utf-8') as list_names:
    list_of_names = list_names.readlines()

list_names.close()
#сама проблема 
print(pyForPdf.func_pdfChecker('Абакус Прайм, СЭ'))
print(pyForPdf.func_pdfChecker(list_of_names[0]))

Собственно сама проблема в том ,что когда я задаю параметр для функции func_pdfChecker в ручную(то бишь саму строку),то функция все выдает правильно
Абакус Прайм, СЭ 280 - слово + страница
А когда я пытаюсь передать параметром первый элемент списка((list_of_names[0]),хотя значения у них одинаковые ,то функция выдаёт None(то есть list_of_names[0] само по себе хранит строчку Абакус Прайм, СЭ)
Также я решил проверить на равенство эти строчки и получил False...
Можете пожалуйста помочь с решением этого вопроса :)
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Ну разные они, строка из файла и твоя строка, да и все. Возможно пробелы лишние, когда из файла читаешь, там специальные символы могут быть, например \n, когда ты выводишь строку с помощью print, ты его не видишь и тебе зрительно кажется, что они одинаковые. Посмотри на print(repr(list_of_names[0])) и на свою строку, приведи их к одному виду, что бы list_of_names[0] == 'Абакус Прайм, СЭ' возвращал True. И будет работать.
Ну и ошибка то наверное общего характера соответственно проведи работу над всеми строками, которые ты получаешь из файла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы