Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python for循环连接字符串作为批量PDF读取和搜索的一部分_Python_For Loop_String Concatenation - Fatal编程技术网

Python for循环连接字符串作为批量PDF读取和搜索的一部分

Python for循环连接字符串作为批量PDF读取和搜索的一部分,python,for-loop,string-concatenation,Python,For Loop,String Concatenation,希望能对在for循环中连接文本字符串有所帮助。我已经写了下面的代码。但是,我的for page\u num in range(no\u pages)循环只是将我的PDF的最后一页添加到变量all\u text中。我做错了什么 如果我执行以下操作,我将正确连接文本。PDF文件有两页长(无页面=2) 这是我在测试文件“H:\PyTest\testfile3.pdf”中的完整代码 import os import datetime import PyPDF2 import nltk from nltk

希望能对在for循环中连接文本字符串有所帮助。我已经写了下面的代码。但是,我的
for page\u num in range(no\u pages)
循环只是将我的PDF的最后一页添加到变量all\u text中。我做错了什么

如果我执行以下操作,我将正确连接文本。PDF文件有两页长(无页面=2)

这是我在测试文件“H:\PyTest\testfile3.pdf”中的完整代码

import os
import datetime
import PyPDF2
import nltk
from nltk.tokenize import sent_tokenize, word_tokenize

search_dir = 'H:\PyTest\Test file 3.pdf'

pdfFileObj = open(search_dir, 'rb') 

pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 

no_pages = pdfReader.numPages
no_pages


for page_num in range(no_pages):
    all_text = ""
    new_text = pdfReader.getPage(page_num).extractText()
    all_text += new_text 

print(sent_tokenize(all_text))

word_search = ['Random', 'Dynamic', 'Company', 'Stake', 'results']

for item in word_search: 
    if item in all_text:
        print(item + ': Found')
    else:
        print(item + ': Not Found')

pdfFileObj.close() 
理想情况下,我不想创建新文件来将文本复制到/保存,因为此函数是一个更广泛的函数的一部分,该函数:

  • 浏览一个大的文件目录
  • 在目录树中的每个pdf文档中搜索搜索词列表
  • 打印找到它的文件名和文件的创建日期
  • 如果可能的话,打印它所在的句子(理想情况下,我们希望看到该段落,但需要进一步探讨nltk,看看是否可行)
  • 要确认,这是一段无法按预期工作的代码:

    for page_num in range(no_pages):
        all_text = ""
        new_text = pdfReader.getPage(page_num).extractText()
        all_text += new_text 
    

    for
    循环中,每次
    所有文本都变为空
    '

    您需要将
    all_text=''
    放在循环之前

    all_text = ""
    
    for page_num in range(no_pages):
        new_text = pdfReader.getPage(page_num).extractText()
        all_text += new_text
    
    连接字符串的python方法是使用
    join
    方法和
    列表理解

    all_text = ''.join([text for text in pdfReader.getPage(page_num).extractText()])
    

    谢谢。太简单了!如果这个或任何其他的答案解决了你的问题,请考虑一下。谢谢!
    all_text = ''.join([text for text in pdfReader.getPage(page_num).extractText()])