大家好! 我使用python3(pycharm),我的代码是这样的:
# -*- coding: utf-8 -*-
import numpy
c=numpy.loadtxt('test.csv',dtype="str_",delimiter=',',usecols=(6,),unpack=True)
当我在test.csv中有一些中文单词时,我收到了这样的错误:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256)
我试图对文件进行编码,如下所示:
c=numpy.loadtxt('test.csv'.encode('utf-8'),dtype="str_",skiprows=0,delimiter=',',usecols=(6,),unpack=True)
然后,我又出现了另一个错误:
IndexError: list index out of range
此外,文件中的中文单词长度超过64。
我浪费了很多时间,请帮帮忙!
答案 0 :(得分:0)
with open('test.csv', encoding='utf-8') as fh:
numpy.loadtxt(fh, dtype="str_", delimiter=',', usecols=(6,), unpack=True)
答案 1 :(得分:0)
当我们将汉字读成numpy时,数据类型不能是一个简单的字符串,因为它将字符视为ASCII不足以容纳UTF-8字符。
所以我在这里所做的就是让numpy知道我们正在读一个4字节的字符,而这足以容纳一个unicode字符。
我使用了以下示例数据进行测试:
1,2,3,4,5,6,7
一,二,三,四,五,六,七
以下是我使用的代码:
# -*- coding: utf-8 -*-
import numpy
c=numpy.genfromtxt('test.csv',dtype="S4",delimiter=',',usecols=(6,),unpack=True)
for txt in c:
print(txt.decode("utf-8"))
您可以进一步查看以下链接以了解更多信息:
1. How many bytes does one Unicode character take?
2. Numpy Data type objects