Задать вопрос
@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...
Можете пожалуйста помочь с решением этого вопроса :)
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Ну разные они, строка из файла и твоя строка, да и все. Возможно пробелы лишние, когда из файла читаешь, там специальные символы могут быть, например \n, когда ты выводишь строку с помощью print, ты его не видишь и тебе зрительно кажется, что они одинаковые. Посмотри на print(repr(list_of_names[0])) и на свою строку, приведи их к одному виду, что бы list_of_names[0] == 'Абакус Прайм, СЭ' возвращал True. И будет работать.
Ну и ошибка то наверное общего характера соответственно проведи работу над всеми строками, которые ты получаешь из файла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы