Python PyPDF2的替代品

Python PyPDF2的替代品,python,python-3.x,nlp,pypdf2,Python,Python 3.x,Nlp,Pypdf2,我使用PyPDF2包从.pdf文件中提取文本。我得到了输出,但不是它想要的形式。我找不到问题出在哪里 代码片段如下所示: import PyPDF2 def Read(startPage, endPage): global text text = [] cleanText = " " pdfFileObj = open('F:\\Pen Drive 8 GB\\PDF\\Handbooks\\book1.pdf', 'rb') pdfReader = Py

我使用PyPDF2包从.pdf文件中提取文本。我得到了输出,但不是它想要的形式。我找不到问题出在哪里

代码片段如下所示:

import PyPDF2
def Read(startPage, endPage):
    global text
    text = []
    cleanText = " "
    pdfFileObj = open('F:\\Pen Drive 8 GB\\PDF\\Handbooks\\book1.pdf', 'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
    num_pages = pdfReader.numPages
    print(num_pages)
    while (startPage <= endPage):
        pageObj = pdfReader.getPage(startPage)
        text += pageObj.extractText()
        startPage += 1
    pdfFileObj.close()
    for myWord in text:
        if myWord != '\n':
            cleanText += myWord
    text = cleanText.strip().split()
    print(text)

Read(3, 3)
导入PyPDF2
def读取(起始页,结束页):
全局文本
text=[]
cleanText=“”
pdfFileObj=open('F:\\Pen Drive 8 GB\\PDF\\Handbooks\\book1.PDF','rb')
pdfReader=PyPDF2.PdfileReader(PdfileObj)
num_pages=pdfReader.numPages
打印(页数)

while(startPage这一行
cleanText+=myWord
只是将所有单词连接到一个长字符串中。 如果要筛选
'\n'
, 而不是:

for myWord in text:
        if myWord != '\n':
            cleanText += myWord
    text = cleanText.strip().split()
您可以这样做:

text = [w for w in text if w != '\n']

这一行
cleanText+=myWord
只是将所有单词连接到一个长字符串中。 如果要筛选
'\n'
, 而不是:

for myWord in text:
        if myWord != '\n':
            cleanText += myWord
    text = cleanText.strip().split()
您可以这样做:

text = [w for w in text if w != '\n']

可能重复的可能重复的感谢。但在纳入您的建议后,输出显示为:[B',e',n',j',a',m',i',n',W',e',y',e',r',s',j',u',d',B',o',W',e',n',n',d',i',x',P',h',i',i',P',e',P',a',l',a',n',q',u',e',e….],有点像这样。它将列表中单词的每个字母都视为单个字符。我想显示列表中拆分的单词。哦,还有一件事我没有注意到。当您在此处添加文本时-
text+=pageObj.extractText()
将其设置为字符串,而不是字符串列表。使用
text+=[pageObj.extractText()]
它将是一个字符串列表,然后我认为您应该得到您期望的结果,这是因为列表中的
+=
运算符期望另一侧有一个列表。因此,如果您给它一个字符串,它将被视为一个字符列表,并且每个字符都将作为单个项目添加。谢谢。但是,据我所知,list对象没有属性名
extractText()
谢谢。但是在合并您的建议后,输出显示为:[B',e',n',j',a',m',i',n',W',e',y',e',r',s',j',u',d',B',o',W',e',n',n',d',i',x',P',h',i',i',P',e',P',a',l',a',n',q',u',e',e….],有点像这样。它将列表中单词的每个字母都视为单个字符。我想显示列表中拆分的单词。哦,还有一件事我没有注意到。当您在此处添加文本时-
text+=pageObj.extractText()
将其设置为字符串,而不是字符串列表。使用
text+=[pageObj.extractText()]
它将是一个字符串列表,然后我认为您应该得到您期望的结果,这是因为列表中的
+=
运算符期望另一侧有一个列表。因此,如果您给它一个字符串,它将被视为一个字符列表,并且每个字符都将作为单个项目添加。谢谢。但是,据我所知,list对象没有属性名
extractText()