2012-03-26 13 views
2

Ich muss die Spaltenüberschriften in einer CSV-Datei überprüfen, und nur die Header-Werte für diese Aufgabe, nicht die Werte unten (noch). Im Moment benutze ich DictReader und Feldnamen, um Spaltenüberschriften zu bekommen, hauptsächlich weil der Code viel klarer ist, was mit dieser Methode passiert. Gibt es einen Grund (Leistung oder andere), nur den Standard-CSV-Reader zu verwenden, lesen Sie in der oberen Spalte als Kopfzeilen und schließen Sie dann die Datei?DictReader Feldnamen vs CSV-Leser erste Zeile

Antwort

7

Ich könnte mir vorstellen, dass der DictReader nur etwas weniger effizient als der CSV-Reader sein würde (ich habe nie Benchmarks gesehen). Was der DictReader bietet, ist eine bessere Lesbarkeit. Jeder Code zu lesen in der Lage sein zu sehen, was los ist, wenn Sie eine Spalte zugreifen

reader = csv.DictReader(f.open) 
for line_dict in reader: 
    line_dict['First Column'] 
    line_dict['Second Column'] 

Gegensatz zu nur numerischer Indizes der CSV-Reader. Wenn Sie mit Dateien mit vielen Spalten arbeiten, kann das Merken von Indizes für Spaltennamen ärgerlich sein. Ich denke für die Lesbarkeit gewinnt der DictReader.

+2

Hinzu kommt, dass der Code resistenter ist - wenn jemand die CSV-Datei neu anordnet (z. B. fügt er eine neue Spalte in der Mitte hinzu), wird der Code nicht verschlüsselt. – aravenel

+0

Wenn DictReader ohne Eingabefeldnamen verwendet wird, steht DictReader._fieldnames erst nach dem Lesen der ersten Datenzeile zur Verfügung. Das ist also ein Minus. –