text= textract.process("/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf")
我试图读取这个文件,但它抛出以下错误:-
'charmap' codec can't decode byte 0x9d in position 6583: character maps to
.
为什么会抛出这个错误?如何解决这个问题?
关于你的问题,这个错误可以这样解决:
有两种方法:
第一个:是通过执行:r"THEPATH",它将读取您通过路径插入的文件,例如:text = r"/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf">
或者你可以只加上两个"/",例如:"//Users//dg//Downloads//Data Wrangling//syllabi//82445.pdf"(这将以相同的方式工作。
希望这对你有所帮助:),并随时提出任何进一步的问题
我可以这样做:
import os
file = open("/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf", "r")
text = file.read()
file.close
这是一个编码问题。
Textract
使用chardet
检测pdf文件的编码(utf-8, latin1, cp1252等)。检测文件的编码并不总是一件容易的事情,chardet
在检测文件编码时可能会失败。在您的情况下,对于这个特定的pdf文件,似乎失败了。
如果您知道文件的编码,那么您可以像这样使用input_encoding
参数:
textract.process(filename, input_encoding="cp1252", output_encoding="utf8")
(见以下链接中的第309期)
注意,encoding
参数指定的是输出编码,而不是输入编码.所以,写
text = textract.process(filename, encoding='ascii')
表示希望用ASCII编码编写输出文件。但这并不意味着ascii就是输入文件的编码。
关于chardet
的说明:您可以使用chardet
:
import chardet
guessed_encoding = chardet.detect(file)
print(guessed_encoding)
它将输出如下内容:
{'encoding': 'EUC-JP', 'confidence': 0.99}
或:
{'encoding': 'EUC-JP', 'confidence': 0.24}
你可以看到这里有一个confidence
键。在第一个示例中,chardet
非常确信编码是EUC-JP
,但在第二个示例中并非如此。
你可以试着对导致问题的pdf文件使用chardet,看看它的置信度是多少。
的有用链接:
https://github.com/deanmalmgren/textract/issues/309
https://github.com/deanmalmgren/textract/issues/164