只能将列表(不是“unicode”)连接到列表

时间:2017-06-20 09:31:32

标签: python-2.7 pypdf

我在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的最后一行,它可以工作。那么我看不到会发生什么呢?

1 个答案:

答案 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");
    });
});