Python 生成器对象没有属性“数据”,使用scipy加载某些文件时出现问题?

Python 生成器对象没有属性“数据”,使用scipy加载某些文件时出现问题?,python,numpy,io,scipy,arff,Python,Numpy,Io,Scipy,Arff,我是python新手,正在尝试用python加载.arff文件这是我尝试的: import arff , numpy as np file1 = open('/Users/user/Desktop/example.arff') dataset = arff.load(file1) print dataset data = np.array(dataset.data) print data 问题在于以下输出: data = np.array(dataset.data) Attrib

我是python新手,正在尝试用python加载.arff文件这是我尝试的:

import arff , numpy as np

file1 = open('/Users/user/Desktop/example.arff')
dataset = arff.load(file1)

print dataset

data = np.array(dataset.data)
print data
问题在于以下输出:

    data = np.array(dataset.data)
AttributeError: 'generator' object has no attribute 'data'
为什么会这样?我该如何避免呢?。这是。arff:

@relation foo
@attribute width  numeric
@attribute height numeric
@attribute color  {red,green,blue,yellow,black}
@data
5.0,3.25,blue
4.5,3.75,green
3.0,4.00,red

有两个arff可以安装,您可能需要安装,您当前安装了arff,它从arff.load返回一个生成器

对于已安装的arff,不要传递文件对象,只需直接加载文件:

dataset = arff.load('eg.arff')
for row in dataset:
    x = row.color
    print(x)
blue
green
red
arff的pypi页面显示了如何使用其负载

由于arff.load是Python生成器,因此它不会立即加载文件。相反,您必须称之为“迭代”,如:

for row in arff.load(...)

将其包装在列表中具有相同的效果-反复调用加载,直到加载完成。

从python 3开始,似乎listarff.load“…”方法不返回带有arff模块0.9的属性,而是使用行。\ u data private但当它卡住时,按下:

for row in list(arff.load(fid)):
   print( row._data )

对不起,没有看到编辑。当这是您的代码答案的输出时:'',我如何获得以下输出:{u'attributes':[u'width',u'NUMERIC',u'height',u'NUMERIC',u'color',[u'red',u'green',u'blue',u'yellow',u'black']],u'relation':u'foo',u'description':u,u'data':[[5.0,3.25,u'blue'],[4.5,3.75,u'green']]?安装iac arff,然后使用我的第一个示例中的代码,但您需要先卸载当前已安装的arff
for row in arff.load(...)
for row in list(arff.load(fid)):
   print( row._data )