Как читать по строкам в pdf-файле с помощью PyPdf?

У меня есть код для чтения из pdf-файла. Есть ли способ читать строки за строкой из файла pdf (а не страницы) с использованием Pypdf, Python 2.6, в Windows?

Вот код для чтения страниц в формате pdf:

import pyPdf def getPDFContent(path): content = "" num_pages = 10 p = file(path, "rb") pdf = pyPdf.PdfFileReader(p) for i in range(0, num_pages): content += pdf.getPage(i).extractText() + "\n" content = " ".join(content.replace(u"\xa0", " ").strip().split()) return content 

Обновить:

Код вызова:

 f= open('test.txt','w') pdfl = getPDFContent("test.pdf").encode("ascii", "ignore") f.write(pdfl) f.close() 

3 Solutions collect form web for “Как читать по строкам в pdf-файле с помощью PyPdf?”

Похоже, что у вас есть большой фрагмент текстовых данных, которые вы хотите интерпретировать по очереди.

Вы можете использовать класс StringIO, чтобы обернуть этот контент в качестве файла для поиска, подобранного для поиска:

 >>> import StringIO >>> content = 'big\nugly\ncontents\nof\nmultiple\npdf files' >>> buf = StringIO.StringIO(content) >>> buf.readline() 'big\n' >>> buf.readline() 'ugly\n' >>> buf.readline() 'contents\n' >>> buf.readline() 'of\n' >>> buf.readline() 'multiple\n' >>> buf.readline() 'pdf files' >>> buf.seek(0) >>> buf.readline() 'big\n' 

В вашем случае выполните следующие действия:

 from StringIO import StringIO # Read each line of the PDF pdfContent = StringIO(getPDFContent("test.pdf").encode("ascii", "ignore")) for line in pdfContent: doSomething(line.strip()) 
 import pyPdf def getPDFContent(path): content = "" num_pages = 10 p = file(path, "rb") pdf = pyPdf.PdfFileReader(p) for i in range(0, num_pages): content += pdf.getPage(i).extractText() + "\n" content = " ".join(content.replace(u"\xa0", " ").strip().split()) return content 

Использование yield и PdfFileReader.pages может упростить вещи,

 from pyPdf import PdfFileReader def get_pdf_content_lines(pdf_file_path): with open(pdf_file_path) as f: pdf_reader = PdfFileReader(f) for page in pdf_reader.pages: for line in page.extractText().splitlines(): yield line for line in get_pdf_content_lines('/path/to/file.pdf'): print line 

Кроме того, некоторые могут google «python получить текст в формате pdf», вот как это сделать: (вот как я сюда попал)

 from pyPdf import PdfFileReader def get_pdf_content(pdf_file_path): with open(pdf_file_path) as f: pdf_reader = PdfFileReader(f) content = "\n".join(page.extractText().strip() for page in pdf_reader.pages) content = ' '.join(content.split()) return content print get_pdf_content('/path/to/file.pdf') 
Interesting Posts

Numpy: нужно понять, что происходит с оператором «in»

Как получить файлы из Salesforce с помощью Python

Список кортежей Python объединяет 2-й элемент с уникальным первым элементом

Очистка текстовой строки после получения текстового текста с помощью Beautifulsoup

502 Bad Gateway с использованием Beautiful Soup, Python / Django

Скребок HTML с использованием lxml и запросов дает ошибку в unicode

Получить текущий URL-адрес в Python с помощью os.environ

Основная ошибка синтаксиса программы Hello Hello

XPath выбирает все, но не самостоятельно :: strong и self :: strong / follow-sibling :: text ()

Почему True / False капитализируется в Python?

Как добавить placeholder к записи в tkinter?

SFTP в Python? (независимая платформа)

Как ограничить выбор дочернего поля на основе значения родительского поля?

Использование Zip для чтения файла по вертикали и поиска по заархивированному списку

pypdf Объединение нескольких PDF-файлов в один PDF-файл

Python - лучший язык программирования в мире.