Ont csv.lecteur de dire quand il est sur la dernière ligne

Apparemment, certains de sortie csv mise en œuvre quelque part tronque les séparateurs de champ à partir de la droite sur la dernière ligne et seule la dernière ligne du fichier lorsque les champs sont nuls.

Exemple d'entrée csv, les champs 'c' et 'd' sont nullable:

a|b|c|d
1|2||
1|2|3|4
3|4||
2|3

Dans quelque chose comme le script ci-dessous, comment puis-je savoir si je suis sur la dernière ligne donc je sais comment les gérer de manière appropriée?

import csv

reader = csv.reader(open('somefile.csv'), delimiter='|', quotechar=None)

header = reader.next()

for line_num, row in enumerate(reader):
    assert len(row) == len(header)
    ....
Notez que ce que vous avez posté n'est pas un fichier CSV. CSV est l'acronyme de "Virgule Sepaerated Valeurs" - le séparateur DOIT être une virgule.
la plupart des csv implémentations vous permettent de spécifier un autre caractère utilisé comme séparateur
La seule près de CSV standard, RFC4180, ne fonctionne pas.
En Python, par docs.python.org/library/csv.html, "les séparateurs et les guillemets varier" -- en particulier le délimiteur n'est pas nécessairement une virgule, de sorte que le csv module est également utilisé pour lire les "non-virgule" valeurs séparées par des, ridicules que l'utilisation peut effectivement l'air (comme, par exemple, dans Excel, "exporter au format CSV" peut utiliser un délimiteur, en fonction dans ce cas sur les Paramètres Régionaux de Windows).
Si elle rend la personne à se sentir mieux, je pense qu'il est sûr de dire que l'entrée, je dois traiter avec ici obéit à aucune norme de toute décence.

OriginalL'auteur | 2009-06-09