Estoy tratando de analizar un archivo CSV usando el módulo csv
de Python (específicamente, la clase DictReader
). ¿Hay alguna forma Pythonic para detectar campos vacíos o faltantes y arrojar un error?¿Cómo puedo detectar los campos faltantes en un archivo CSV de forma pitonica?
Aquí hay un ejemplo de archivo con los siguientes encabezados: NOMBRE, ETIQUETA, VALOR
foo,bar,baz
yes,no
x,y,z
Al analizar, me gustaría que la segunda línea de lanzar un error, ya que le falta el campo VALUE.
He aquí un fragmento de código que muestra cómo me acerco a este (caso omiso de las cadenas no modificables ... son sólo está presente por razones de brevedad):
import csv
HEADERS = ["name", "label", "value" ]
fileH = open('configFile')
reader = csv.DictReader(fileH, HEADERS)
for row in reader:
if row["name"] is None or row["name"] == "":
# raise Error
if row["label"] is None or row["label"] == "":
# raise Error
...
fileH.close()
¿Existe una forma más limpia de la comprobación de campos en el archivo CSV sin tener un montón de declaraciones if
? Si necesito agregar más campos, también necesitaré más condicionales, lo que me gustaría evitar si es posible.
Sweet Pythonic way! –
Este método es bastante incompatible con el comportamiento de csv.DictReader. Pasará por todas las teclas de la fila, aunque el DictReader podría descartar algunas de ellas, ya que no se mencionaron explícitamente en HEADERS. Más aquí: http://docs.python.org/library/csv.html#csv.DictReader – Triptych
@Triptych: Hay como máximo una de esas claves adicionales (el valor pasado como clave de reposo para el constructor). No veo el problema con eso. – balpha