我有一些代码可以从pdf文件中读取.有没有办法在Windows上使用Pypdf,Python 2.6在pdf文件(而不是页面)中逐行读取?
以下是阅读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
Run Code Online (Sandbox Code Playgroud)
更新:
通话代码是这样的:
f= open('test.txt','w')
pdfl = getPDFContent("test.pdf").encode("ascii", "ignore")
f.write(pdfl)
f.close()
Run Code Online (Sandbox Code Playgroud)
Mik*_*eyB 11
看起来你拥有的是一大块你想要逐行解释的文本数据.
您可以使用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'
Run Code Online (Sandbox Code Playgroud)
在你的情况下,做:
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())
Run Code Online (Sandbox Code Playgroud)
小智 9
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
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
另外,有些人可能谷歌"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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62805 次 |
| 最近记录: |