web-dev-qa-db-fra.com

python csv2libsvm.py: AttributeError: l'objet '_csv.reader' n'a pas d'attribut 'next'

Je souhaite convertir un fichier csv en fichier au format fragmenté avec csv2libsvm.py ( https://github.com/zygmuntz/phraug/blob/master/csv2libsvm.py ).

Le fichier CSV contient 37 attributs + l'étiquette (dernière colonne). il ne contient ni en-tête ni index. Exp de la 1ère ligne: 63651000000.0,63651000000.0,15,0,0,0,0,0,0,0,0,0,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

Lorsque vous entrez la ligne de commande suivante: python csv2libsvm.py Z.csv data.txt 38 1

J'ai eu l'erreur suivante:

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

Avez-vous une idée du problème?

28
Zoya

Ceci est dû aux différences entre python 2 et python 3. Utilisez la fonction intégrée next dans python 3. Autrement dit, écrivez next(reader) au lieu de reader.next() à la ligne 47. De plus, vous devez ouvrir le fichier en mode texte. Changez donc la ligne 47 comme suit: i = open( input_file, 'r' ).

56
Hossein

Pour Python 3.x:

Utilisez next(reader) au lieu de reader.next()

19
SHUJAT MUNAWAR