Comptage du nombre de colonnes dans un fichier texte avec Python
J'ai deux fichiers texte composé de espacées séparées par des colonnes. Ce sont des extraits de ces deux fichiers:
FileA
1 1742.420 -0.410 20.1530 0.4190 1.7080 0.5940
2 1872.060 0.070 21.4710 0.2950 0.0670 0.3380
3 1918.150 0.150 18.9220 0.0490 1.4240 0.1150
4 1265.760 0.170 19.0850 0.0720 1.3330 0.1450
5 308.880 0.220 20.5020 0.1570 0.0200 0.1720
....
Fichierb
1 1198.367 6.465 15.684 0.015 3.119 0.140 1
2 1451.023 6.722 17.896 0.031 0.171 0.041 1
3 1032.364 6.788 18.895 0.074 -0.084 0.088 1
4 984.509 7.342 19.938 0.171 0.043 0.322 1
5 1068.536 7.369 19.182 0.091 0.486 0.143 1
....
Comme vous pouvez le voir FileA a 7 colonnes et Fichierb a 8. C'est le code que j'utilise pour compter les colonnes:
import csv
file = 'filename'
reader = csv.reader(file)
num_cols = 0
for col in reader:
num_cols = num_cols + 1
Ce petit code correctement donne le nombre de colonnes pour FileA (7), mais pas pour Fichierb (donne également 7) Ce qu'il se passe et comment puis-je résoudre ce problème?
Si je compte les lignes au lieu de colonnes, alors: 1 - comment puis-je compter les colonnes? et 2 - étant donné que mes fichiers ont plusieurs milliers de lignes/lignes, pourquoi suis-je arriver à ces résultats (7)?
Vous êtes à compter les lignes.
Le texte des fichiers ont plusieurs milliers de lignes/lignes, donc si je compte les lignes qui soulève une autre série de questions.
est correcte. On pourrait dire
Le texte des fichiers ont plusieurs milliers de lignes/lignes, donc si je compte les lignes qui soulève une autre série de questions.
est correcte. On pourrait dire
for bunnies in reader
et vous serez toujours en regardant les lignes, pas de colonnes. Compte le nombre d'éléments de la première ligne, comme d'autres l'ont suggéré.
OriginalL'auteur Gabriel | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Pas besoin d'utiliser
iter()
ici;csv.reader()
objets sont itérable directement.Je n'étais pas sûr. J'ai extrapolé à partir des
next([1, 2, 3])
erroring. Vous avez raison, bien -next(csv.reader(['a, b, c']))
fonctionne très bienle
with
déclaration est la préférence pour travailler avec des fichiers - il ferme le fichier automatiquement lorsque la portée est de gauche.next
prend un itérateur, et retourne le prochain (dans ce cas, d'abord) élément de celui-ci.next(my_iterator)
est équivalent àlist(my_iterator)[0]
sauf
list(it)
parcourt toutes les valeurs.OriginalL'auteur Eric
Juste lu la première ligne, l'utilisation de split pour trouver tous les non-blanc parties, le comte ceux:
OriginalL'auteur Alfe
viens d'obtenir la longueur de la première ligne!!
csv.reader
prend un nom de fichier. Aussi, ce n'est pas normal csv, exige de configuration supplémentaires à analyser.Aussi, python 3 dénonçait/supprime
i.next()
en faveur denext(i)
Je n'avais aucune idée que j'utilise 2.7. Et oui, C'était une faute de frappe, j'ai oublié d'ajouter le
open
OriginalL'auteur Ryan Saxe