我正在尝试使用Python进行一些基本的语料库分析。我收到以下错误消息:
追踪(最近通话):文件“”,第2行,在打印(len(poems.words(f)),f)len中的文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ corpus \ reader \ util.py”,第240行用于self.iterate_from(self._toknum [-1])中的tok:文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ corpus \ reader \ util.py”,行306,位于iterate_from令牌= self.read_block(self._stream)文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ corpus \ reader \ plaintext.py”,行134,在_read_word_block中words.extend(self._word_tokenizer.tokenize(stream.readline()))阅读行中的文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ data.py”,行1220new_chars = self._read(readsize)_read中的文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ data.py”,行1458字符,bytes_decoded = self._incr_decode(字节)_incr_decode中的文件“ C:\ Python38-32 \ lib \ site-packages \ nltk \ data.py”,行1489返回self.decode(bytes,'strict')解码中的文件“ C:\ Python38-32 \ lib \ encodings \ utf_8.py”,第16行返回codecs.utf_8_decode(input,errors,True)UnicodeDecodeError:“ utf-8”编解码器无法解码位置12的字节0x97:无效的起始字节
我的假设是,我正在查看的202个文本文件之一存在UTF错误。我的问题是,从错误消息中可以分辨出哪个文件或哪些文件有问题吗?
谢谢,
Michael
假设您知道文件ID(语料库文件的路径),则可以使用encoding="utf-8"
打开所有文件ID>
如果您不知道路径,假设您使用的是nltk语料库加载器,则可以使用以下方法获取它们:
poems.fileids()
此后,对于文件列表中的每个文件(例如
fileids
),您都可以尝试:
for file_ in fileids: try: with open(file_, encoding="utf-8") a f_i: f_i.readlines() except: print("You got problems with the file: ", file_)
无论如何,加载程序还具有一个名为“ encoding”的参数,可用于对主体进行正确的编码。默认情况下设置为“ utf-8”
此处有更多详细信息:nltk corpus loader