gpt4 book ai didi

python - 使用 pyPdf 读取 pdf 时出现 UnicodeEncodeError

转载 作者:行者123 更新时间:2023-12-01 06:14:52 25 4
gpt4 key购买 nike

伙计们,我之前发布了一个问题pypdf python tool .不要将其标记为重复,因为我收到下面指示的错误

  import sys
import pyPdf

def convertPdf2String(path):
content = ""
# load PDF file
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# iterate pages
for i in range(0, pdf.getNumPages()):
# extract the text from each page
content += pdf.getPage(i).extractText() + " \n"
# collapse whitespaces
content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
return content

# convert contents of a PDF file and store retult to TXT file
f = open('a.txt','w+')
f.write(convertPdf2String(sys.argv[1]))
f.close()

# or print contents to the standard out stream
print convertPdf2String("/home/tom/Desktop/Hindi_Book.pdf").encode("ascii", "xmlcharrefreplace")

我在第一个 pdf 文件中收到此错误 UnicodeEncodeError:“ascii”编解码器无法对位置 0-3 中的字符进行编码:序数不在范围内 (128) 此 pdf http://www.envis-icpe.com/pointcounterpointbook/Hindi_Book.pdf 出现以下错误

UnicodeEncodeError:'ascii'编解码器无法对位置 38 中的字符 u'\xe7' 进行编码:序号不在范围(128)

如何解决这个问题

最佳答案

我自己尝试了一下,得到了同样的结果。忽略我的评论,我没有看到您也将输出写入文件。这就是问题所在:

f.write(convertPdf2String(sys.argv[1]))

由于 convertPdf2String 返回一个 Unicode 字符串,但 file.write 只能写入字节,因此调用 f.write 会尝试自动转换使用 ASCII 编码的 Unicode 字符串。由于 PDF 显然包含非 ASCII 字符,因此失败。所以应该是这样的

f.write(convertPdf2String(sys.argv[1]).encode("utf-8"))
# or
f.write(convertPdf2String(sys.argv[1]).encode("ascii", "xmlcharrefreplace"))

编辑:

工作源代码,仅更改了一行。

# Execute with "Hindi_Book.pdf" in the same directory
import sys
import pyPdf

def convertPdf2String(path):
content = ""
# load PDF file
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# iterate pages
for i in range(0, pdf.getNumPages()):
# extract the text from each page
content += pdf.getPage(i).extractText() + " \n"
# collapse whitespaces
content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
return content

# convert contents of a PDF file and store retult to TXT file
f = open('a.txt','w+')
f.write(convertPdf2String(sys.argv[1]).encode("ascii", "xmlcharrefreplace"))
f.close()

# or print contents to the standard out stream
print convertPdf2String("Hindi_Book.pdf").encode("ascii", "xmlcharrefreplace")

关于python - 使用 pyPdf 读取 pdf 时出现 UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com