我正在制作一个有趣的节目,我遇到了一个我无法找到解决方案的问题。 我写的代码看起来像这样:
import numpy as np
data= np.genfromtxt('list.txt', unpack=True, dtype=("U12", "U12"))
print(data)
'list.txt'看起来像这样:
# random random2
foo ßaar
当我尝试运行此代码时,会出现以下错误消息:
UnicodeDecodeError Traceback(最近一次调用最后一次) ()中的C:\ Users \ syhon \ Documents \ Test \ test.py 1导入numpy为np 2 ----> 3 data = np.genfromtxt('list.txt',unpack = True,dtype =(“U12”,“U12”)) 4打印(数据)
C:\ Users \ syhon \ Anaconda3 \ lib \ site-packages \ numpy \ lib \ npyio.py in> genfromtxt(fname,dtype,comments,delimiter,skip_header,skip_footer,> converter,missing_values,filling_values, usecols,names,excludelist,> deletechars,replace_space,autostrip,case_sensitive,defaultfmt,unpack,> usemask,loose,invalid_raise,max_rows) 1927年dtype = np.dtype(ttype) 1928# - > 1929年输出= np.array(数据,dtype) 1930年如果使用mask: 1931年如果dtype.names:
UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xc3:序号不在范围内(128)
但是,只要删除ß,代码就可以正常工作。 有没有办法保持变音符号?
答案 0 :(得分:0)
您可以尝试手动指定编码吗?
>>> import numpy as np
>>> data= np.genfromtxt('list.txt', unpack=True, dtype=("U12", "U12"), encoding='ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "L:\lib\site-packages\numpy\lib\npyio.py", line 1708, in genfromtxt
first_line = _decode_line(next(fhd), encoding)
File "L:\\lib\encodings\ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 4: ordinal not in range(128)
>>> data= np.genfromtxt('list.txt', unpack=True, dtype=("U12", "U12"), encoding='bytes')
>>> print(data)
['foo' 'ßaar']
注意:对我来说bytes
已经是默认编码,因此我最初无法复制您的错误。
编辑:澄清一下,我的意思是将encoding
关键字参数添加到np.genfromtxt()
函数调用中。当我最初运行您的代码时,没有错误。我只能在将编码设置为ascii
时重现您的错误。
答案 1 :(得分:0)
推出
# -*- coding: utf-8 -*-
顶部的似乎解决了问题