【问题标题】:python csv2libsvm.py: AttributeError: '_csv.reader' object has no attribute 'next'python csv2libsvm.py:AttributeError:'_csv.reader'对象没有属性'next'
【发布时间】:2017-08-03 16:23:03
【问题描述】:

我想使用 csv2libsvm.py (https://github.com/zygmuntz/phraug/blob/master/csv2libsvm.py) 将 csv 文件转换为稀疏格式文件。

CSV 文件包含 37 个属性 + 标签(最后一列)。它不包含标题或索引。 第一行的exp:63651000000.0,63651000000.0,153.1,0,0,0,0,0,0,5,1,0,4,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1

输入以下命令行时: python csv2libsvm.py Z.csv data.txt 38 1

我收到以下错误:

Traceback (most recent call last):
  File "csv2libsvm.py", line 47, in <module>
    headers = reader.next()
AttributeError: '_csv.reader' object has no attribute 'next'

你对这个问题有什么想法吗?

【问题讨论】:

    标签: python csv libsvm


    【解决方案1】:

    这是因为python 2和python 3的不同。使用python 3中的内置函数next。即在第47行写next(reader)而不是reader.next()。另外,你应该以文本模式打开文件。因此,将第 47 行更改为 i = open( input_file, 'r' )

    【讨论】:

    • 所以我修改了 csv2libsvm.py: 41 i = open( input_file, 'r' ) 42 o = open( output_file, 'wb' ) 44 reader = csv.reader( i ) 46 if skip_headers : 47 headers = next(reader) 但我有以下错误: Traceback (last last最近调用): File "csv2libsvm.py", line 54, in label = line.pop(label_index) IndexError: pop index out范围
    • 又是一个问题! label_index 应该小于每行的元素数。尝试调查label_index 的值。
    • 是的,谢谢,我还有另一个错误: Traceback(最近一次调用最后一次):文件“csv2libsvm.py”,第 57 行,在 o.write(new_line) TypeError: 'str'不支持缓冲区接口所以,我修改了第 59 行: o.write( bytes(new_line, 'UTF-8') ) ,它可以工作,但我得到了一个稀疏文件,其中仅包含 1 行与 csv 的最后一行对应文件!!!!
    【解决方案2】:

    对于 Python 3.x:

    使用next(reader) 而不是reader.next()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 2022-11-06
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多