使用numpy'打开python 3.3中使用utf-8-sig编码的CSV文件;s genfromtxt()

使用numpy'打开python 3.3中使用utf-8-sig编码的CSV文件;s genfromtxt(),python,python-3.x,numpy,Python,Python 3.x,Numpy,我正在尝试使用python 3.3和numpy的genfromtxt()函数打开一个使用utf-8-sig编码的CSV文件。这个文件是由另一个我无法控制的软件生成的。如果通过直接指定文件路径打开文件,第一个值是nan。我认为这是因为genfromtxt()没有正确解码文本文件。经过一点尝试和错误,我能够拼凑出这段代码,效果相当好 import numpy as np import io fid = open('filename.csv', encoding='utf-8-sig') data

我正在尝试使用python 3.3和numpy的
genfromtxt()
函数打开一个使用
utf-8-sig
编码的CSV文件。这个文件是由另一个我无法控制的软件生成的。如果通过直接指定文件路径打开文件,第一个值是
nan
。我认为这是因为
genfromtxt()
没有正确解码文本文件。经过一点尝试和错误,我能够拼凑出这段代码,效果相当好

import numpy as np
import io

fid = open('filename.csv', encoding='utf-8-sig')
data = np.genfromtxt(io.BytesIO(fid.read().encode('ascii')), delimiter=',')

有没有人知道一种更优雅的方法来代替使用这种解码编码包装方法?

我想你是说调用
打开
时使用
编码
。你试过
np.fromfile
?@Warren-谢谢你指出这一点。修正了。@ali\m我试过了,但没用。我只能在(-1)中读取单个值genfromtxt是否需要字节流对象?您可以只打开('filename.csv','rb')。然后是np.genfromtxt(fid,分隔符=',')。听起来numpy应该接受unicode流,如果它是一个名为“genfromtxt”的方法。