Aparentemente, alguna implementación de salida csv en algún lugar trunca los separadores de campo de la derecha en la última fila y solo la última fila en el archivo cuando los campos son nulos.Haga que csv.reader diga cuándo está en la última línea
Ejemplo de entrada CSV, los campos de los c "y 'd' son anulables:
a|b|c|d
1|2||
1|2|3|4
3|4||
2|3
En algo así como la secuencia de comandos a continuación, ¿cómo puedo saber si estoy en la última línea, así que sé cómo manejar ¿apropiadamente?
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)
....
Tenga en cuenta que lo que ha publicado no es CSV. CSV significa "valores separados por comas": el separador DEBE ser una coma. –
la mayoría de las implementaciones de csv le permiten especificar un carácter alternativo como el separador –
@Neil: ¿eh? "El formato CSV (valores separados por comas) es el formato de importación y exportación más común para hojas de cálculo y bases de datos. No existe un" estándar CSV "[..]. Sin embargo, mientras que los delimitadores y los caracteres de comillas varían, el formato general es lo suficientemente similar que. [..] " – SilentGhost