TypeError: sequence item 0: expected str instance, NoneType found解决办法

  • Post author:
  • Post category:其他




TypeError: sequence item 0: expected str instance, NoneType found解决办法

在学习利用pdfplumber读取PDF文本内容时,提示出现TypeError: sequence item 0: expected str instance, NoneType found错误。

分析主要是在拼接字符串.join()时出现了非str类型的None。

打开PDF文件查看后发现第一页是一个类似图片格式的页面,无法提取文字,所以返回了一个None值。

import pdfplumber
pdf = pdfplumber.open('C:\\募集说明书.PDF')
pages = pdf.pages
text_all = []
for page in pages:  # 遍历pages中每一页的信息
    text = page.extract_text()# 提取当页的文本内容
    text_all.append(text)  # 通过列表.append()方法汇总每一页内容
text_all = ''.join(text_all) # 把列表转换成字符串
print(text_all) 
pdf.close()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-ca93803ba76b> in <module>
      6     text = page.extract_text()# 提取当页的文本内容
      7     text_all.append(text)  # 通过列表.append()方法汇总每一页内容
----> 8 text_all = ''.join(text_all) # 把列表转换成字符串
      9 print(text_all)
     10 pdf.close()

TypeError: sequence item 0: expected str instance, NoneType found

解决思路:

在append()每一页内容时,增加if 和 continue语句,如果是None值则不执行append()

代码如下:

import pdfplumber
pdf = pdfplumber.open('C:\\募集说明书.PDF')
pages = pdf.pages
text_all = []
for page in pages:
    text = page.extract_text()
    if text == None:
        continue 
    text_all.append(text)
text_all = ''.join(text_all)
text_all = text_all.replace('\n','')
print(text_all) 
pdf.close()

成功解决



版权声明:本文为m0_60465490原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。