2017-06-20 57 views
0

我已將複製粘貼到Word.docx文件中的一些Lorem Ipsum,將其保存爲PDF並嘗試運行以下腳本以進行測試以從PDF中提取文本。只能將列表(不是「unicode」)連接到列表

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

您能詳細說明一下嗎?什麼錯誤顯示,你是什麼意思「逐行運行代碼」? – thomaux

+0

錯誤位於標題中。下面的themiurge提出了一個答案,但它不完整,因爲我想fileText工作 – PRIME

回答

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") 
+0

謝謝,但是,我需要fileText之後的其他用途。例如,當我循環兩個目錄來做到這一點: d.make_file(fileText,fileText2)。如果我將它存儲在fileLines中,那麼我不能像那樣使用它。 – PRIME

+0

你需要在fileText中存儲什麼?全文或行列表? – themiurge

+0

用於比較的行的列表 – PRIME

相關問題