csvreader.fieldnames pas reconnu comme un attribut d'un fichier csv reader objet en python
Je suis en train d'extraire l'en-tête d'un fichier CSV en Python en utilisant le module CSV.
Le fichier CSV est assez plat, et ressemble à quelque chose comme:
Ce, Que, De L'Autre
1, 2, 3
Je suis en train de faire les suivants:
- Lire dans le fichier CSV et faire l'objet de lecteur de
- pousser le lecteur de l'itérateur à la ligne suivante pour forcer l'accès à la première ligne au moins une fois (à partir de la csv documentation du module: "Si pas passé en paramètre lors de la création de l'objet, cet attribut est initialisé lors de la première de l'accès ou lorsque le premier enregistrement est lu à partir du fichier.")
- de l'affectation de la
.fieldnames
attribuer à une variable et l'imprimer
voici un extrait de code pour illustrer:
datafile = open(fname, "rb")
reader = csv.reader(datafile) #use csv module to parse in the header
reader.next() # read next line so header will be accessed
rfd_header = reader.fieldnames
print "header:\n"
print rfd_header
Cela entraîne une erreur:
AttributeError: '_csv.reader", l'objet n'a pas d'attribut "fieldnames'
Qui sonne comme le .fieldnames
attribut n'est pas là, mais dans la documentation de Python 2.6.6 (même version de python, j'utilise)
J'apprécierais toute réflexion dans ce mystère. Si il y a une autre méthode pour extraire l'en-tête qui serait génial aussi!
Grâce.
OriginalL'auteur Jeff | 2010-10-15
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vraiment utiliser des csv.lecteur au lieu de csv.DictReader, tout ce que vous devez faire est de remplacer
par
Cela n'a pas fonctionné pour moi. J'ai ensuite
'_csv.reader' object has no attribute 'next'
(Python 3)OriginalL'auteur John Machin
Essayer
csv.DictReader
au lieu decsv.reader
. La documentation dit aussi:DictReader les objets sont les suivantes attribut public:
csvreader.fieldnames - Si ce n'est passé en paramètre lors de la création de l'objet, cet attribut est initialisé lors de la première de l'accès ou lorsque le premier enregistrement est lu à partir du fichier.
http://docs.python.org/library/csv.html
Euh qu'est-ce que "cet attribut est initialisé lors de la première de l'accès" censé signifier? Pour moi, cela ressemble à la classe de faire l'initialisation tardive de la fieldnames tout temps, il a besoin aussi.
OriginalL'auteur eumiro
Si vous avez besoin du résultat dans une liste, vous pouvez prendre:
Ce doit stocker la première ligne (en-tête/champs) à la variable "rfd_header"
Ensuite, vous pouvez effectuer une itération sur les valeurs de la variable et le mettre dans une liste
Ensuite, vous pouvez imprimer le résultat
OriginalL'auteur Bennett Hawley