我是Python的初学者(正在使用3.4)。这是我的代码的相关部分。
fileObject = open("countable nouns raw.txt", "rt")
bigString = fileObject.read()
fileObject.close()
每当我尝试读取此文件时,我都会得到:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 82273: character maps to <undefined>
我一直在阅读,这似乎与我的默认编码不匹配文本文件编码有关。我读过另一篇文章,您可以使用此方法来读取具有特定编码的文件:
import codecs
f = codecs.open("file.txt", "r", "utf-8")
但是您必须事先知道。问题是我不知道文本文件是如何编码的。建议使用Chardet的一些帖子。我已经安装了它,但是我不知道如何获取它来读取文本文件。
关于如何解决这个问题的任何想法?
无需使用codecs.open()
; 这是对Python 2的建议。
在Python 3中open()
有一个encoding
参数:
fileObject = open("countable nouns raw.txt", "rt", encoding='utf8')
当然,这确实需要您知道该文件使用了哪种编解码器。一般来说,Python很难弄清楚这一点。单个文件格式可能包含编解码器信息或已在给定编解码器上进行了标准化,但是如果所有文件都具有通用文本文件,则必须弄清楚是谁创建了该文件以及使用了哪种编解码器来写入数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句