我在Word.docx文件中粘贴了一些Lorem Ipsum,将其保存为PDF并尝试运行以下脚本以进行测试以从PDF中提取文本。
from pyPdf import PdfFileReader
if (fileExtension == ".PDF"):
pdfDoc = PdfFileReader(file(FOLDER+j, "rb"))
fileText = ""
print("Processing a PDF file")
for pdfpage in range(0,pdfDoc.getNumPages()):
fileText = fileText + pdfDoc.getPage(pdfpage).extractText()
fileText = cleantext(fileText)
fileText = fileText.splitlines(True)
else:
print("PLEASE CHOOSE A .PDF FILE")
它会针对任何PDF文件引发此特定错误。但是,当我每行运行代码时,它似乎确实有效。所以,如果我第一次运行
for pdfpage in range(0,pdfDoc.getNumPages()):
fileText = fileText + pdfDoc.getPage(pdfpage).extractText()
然后是下一行,然后是fileText的最后一行,它可以工作。那么我看不到会发生什么呢?
答案 0 :(得分:0)
阅读完第一页后fileText
确实是list
,因为splitlines
返回的是fileText
。阅读第二页时,将其全文添加到list
(现在为pdfDoc.getPage(pdfpage).extractText()
)。因此错误:您无法将字符串(list
)连接到from pyPdf import PdfFileReader
fileText = []
if (fileExtension == ".PDF"):
pdfDoc = PdfFileReader(file(FOLDER+j, "rb"))
print("Processing a PDF file")
for pdfpage in range(0,pdfDoc.getNumPages()):
pageText = pdfDoc.getPage(pdfpage).extractText()
pageText = cleantext(pageText)
fileText.append(pageText.splitlines(True))
else:
print("PLEASE CHOOSE A .PDF FILE")
。
如果您只需要一个行列表,我建议您重新编写代码:
fileText
这会存储for
中的所有行以供日后使用。
顺便说一句,当你逐行运行代码时,它会起作用,因为这两行是在fileText = cleantext(fileText)
fileText = fileText.splitlines(True)
循环之外执行的:
from pyPdf import PdfFileReader
if (fileExtension == ".PDF"):
pdfDoc = PdfFileReader(file(FOLDER+j, "rb"))
fileText = ""
print("Processing a PDF file")
for pdfpage in range(0,pdfDoc.getNumPages()):
fileText = pdfDoc.getPage(pdfpage).extractText()
fileText = cleantext(fileText)
fileText = fileText.splitlines(True)
else:
print("PLEASE CHOOSE A .PDF FILE")
这相当于如你所描述的那样逐行执行(注意缩进):
$(document).ready(function(){
$(".drop").hide();
$(".link-1").mouseenter(function(){
$('.link-1-drop').slideDown("fast");
});
$(".link-1").mouseleave(function(){
$('.link-1-drop').slideUp("fast");
});
});