Qual è il modo migliore per prendere un file di dati che contiene una riga di intestazione e leggere questa riga in una tupla denominata in modo che le righe di dati siano accessibili dal nome dell'intestazione?Qual è il modo pietonico per leggere i dati del file CSV come file di namedtuples?
stavo cercando qualcosa di simile:
import csv
from collections import namedtuple
with open('data_file.txt', mode="r") as infile:
reader = csv.reader(infile)
Data = namedtuple("Data", ", ".join(i for i in reader[0]))
next(reader)
for row in reader:
data = Data(*row)
Il lettore oggetto non è subscriptable, in modo che il codice di cui sopra tiri un TypeError
. Qual è il modo pietonico per leggere l'intestazione di un file in un namedtuple?
drbunsen: Dopo aver fatto questo si può cambiare ciclo di elaborazione di : 'per i dati nella mappa (Data._make, reader):'. – martineau
@spinup: ho modificato un po 'la tua modifica. – martineau
Cosa succede se i dati CSV mancano di un'intestazione? C'è un modo per assegnare un nome a una colonna? (Se i dati CSV mancano di un'intestazione con nome e si desidera assegnare i nomi di colonna, mi sembra che la mia unica opzione sia quella di leggerlo come una sequenza di dizionari). –