昨天在我的代码中突然出现“ UnicodeDecodeError”。
文件 “ D:\ Anaconda \ lib \ site-packages \ IPython \ core \ interactiveshell.py”,行 3284,在run_code中 self.showtraceback(running_compiled_code = True)
文件 “ D:\ Anaconda \ lib \ site-packages \ IPython \ core \ interactiveshell.py”,行 2021年,在showtraceback中 值,tb,tb_offset = tb_offset)
文件“ D:\ Anaconda \ lib \ site-packages \ IPython \ core \ ultratb.py”,行 1379,在structured_traceback中 自我,etype,值,tb,tb_offset,number_of_lines_of_context)
文件“ D:\ Anaconda \ lib \ site-packages \ IPython \ core \ ultratb.py”,行 1291,结构化跟踪 elist = self._extract_tb(tb)
文件“ D:\ Anaconda \ lib \ site-packages \ IPython \ core \ ultratb.py”,行 1272,在_extract_tb中 返回traceback.extract_tb(tb)
extract_tb中的文件“ D:\ Anaconda \ lib \ traceback.py”,第72行 返回StackSummary.extract(walk_tb(tb),limit = limit)
摘录中的文件“ D:\ Anaconda \ lib \ traceback.py”,第364行 f.line
文件“ D:\ Anaconda \ lib \ traceback.py”,行286,行 self._line = linecache.getline(self.filename,self.lineno).strip()
文件“ D:\ Anaconda \ lib \ linecache.py”,第16行,在getline中 lines = getlines(filename,module_globals)
getlines中的文件“ D:\ Anaconda \ lib \ linecache.py”,第47行 返回updatecache(filename,module_globals)
updatecache中的文件“ D:\ Anaconda \ lib \ linecache.py”,第137行 行= fp.readlines()
文件“ D:\ Anaconda \ lib \ codecs.py”,行321,在解码中 (结果,消耗)= self._buffer_decode(数据,self.errors,最终)
UnicodeDecodeError:“ utf-8”编解码器无法解码位置中的字节0xf6 2441:无效的起始字节
import csv
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
dateiname_TDM = "./TDM_example_small.csv"
dateiname_corpus = "./Topic_Modeling/Input_Data/corpus.mm"
dateiname_dictionary = "./Topic_Modeling/Input_Data/dictionary.dict"
ids = {}
corpus = []
with open(dateiname_TDM, newline='') as csvfile:
reader = csv.reader(csvfile, delimiter=';', quotechar='|')
documente = next(reader, None)[1:]
for rownumber, row in enumerate(reader):
for index, field in enumerate(row):
if index == 0:
if rownumber > 0:
ids[rownumber-1] = field
else:
if rownumber == 0:
corpus.append([])
else:
try:
if field > 0:
corpus[index-1].append((rownumber-1, int(field)))
except ValueError:
corpus[index-1].append((rownumber-1, 0))
答案 0 :(得分:0)
我不完全确定2441号位置是什么,但可能是以下之一:
the_string.encode("UTF-8")
或在encoding = "UTF-8"
函数中打开open
时进行操作\u
或\U
,这会使下一个字符作为Unicode序列的一部分读取,因此repr(the_string)
要做的是添加反斜杠以使之后的反斜杠无效(可能不是这个) bytes
对象,而不是str
对象。尝试在r+b
函数中使用open
(读写,字节)打开它我或多或少地将意大利面扔在了墙上,但我希望这会有所帮助!