Genfromtext与变音符号的问题

时间:2018-03-27 20:39:29

标签: python genfromtxt

我正在制作一个有趣的节目,我遇到了一个我无法找到解决方案的问题。 我写的代码看起来像这样:

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)

但是,只要删除ß,代码就可以正常工作。 有没有办法保持变音符号?

2 个答案:

答案 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 -*-
顶部的

似乎解决了问题