Sto cercando di analizzare un file CSV utilizzando il modulo csv
di Python (in particolare, la classe DictReader
). Esiste un modo Python per rilevare campi vuoti o mancanti e generare un errore?Come posso rilevare i campi mancanti in un file CSV in modo Pythonic?
Ecco un esempio di file utilizzando le seguenti intestazioni: NOME, ETICHETTA, VALORE
foo,bar,baz
yes,no
x,y,z
Durante l'analisi, mi piacerebbe la seconda linea di gettare un errore dal momento che manca il campo del valore.
Ecco un frammento di codice che mostra come sto avvicinando questo (tralasciare le stringhe hard-coded ... sono presenti solo per brevità):
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()
c'è un modo più pulito di controllo per campi nel file CSV senza avere un gruppo di istruzioni if
? Se ho bisogno di aggiungere altri campi, avrò bisogno anche di altri condizionali, che vorrei evitare se possibile.
Dolce modo Pythonic! –
Questo metodo è praticamente incompatibile con il comportamento di csv.DictReader. Passerà attraverso tutti i tasti della riga, anche se alcuni di essi potrebbero essere scartati da DictReader perché non sono stati esplicitamente menzionati in HEADERS. Maggiori informazioni qui: http://docs.python.org/library/csv.html#csv.DictReader – Triptych
@Triptych: esiste al massimo una chiave aggiuntiva (il valore passato come restkey al costruttore). Non vedo il problema con questo. – balpha