So bekomme ich eine CSV-in API-Anforderung, ist-das Format der CSVCSV Lesen für gleiche Kopf- und getrennt in dict
"id","loc_name","qty","loc_name","qty" "NM001","HLR","10","KBD","20" "NM003","KMG","15","SLD","25"
und ich möchte ein dict in diesem Format: {"NM001":{'HLR':'10', 'KBD':'20'}, "NM003":{"KMG": "15", "SLD": "25"}}
versucht Code-
field_names = next(csv.reader(csv_file,delimiter=",")) csv_file_handler = csv.DictReader(csv_file,delimiter=",",fieldnames=field_names) for each_row in islice(csv_file_handler, 1, None): print each_row
- hier csv_file ist die Datei, die ich in der Antwort bekomme.
result = {'id': 'NM001', 'loc_name': 'KBD', 'qty': '20'} {'id': 'NM003', 'loc_name': 'SLD', 'qty': '25'}
das Problem in csv.DictReader ist, dass es nur den letzten Wert zurück, da die Header gleich sind.
sieht gut aus, aber was ist, wenn die Größe csv changes.Wie Sie es tun, durch harte codind '{df.loc [i," loc_name "]: df.loc [i," qty "], df.loc [i," l oc_name.1 "]: df.loc [i," qty.1 "]}' können wir das ignorieren? –
Das hängt davon ab, was "die Größe von CSV ändert" bedeutet. Beziehen Sie sich auf Zeilen oder Spalten? Sie können 'df.ix [, ]' 'verwenden und int-Indizes verwenden und diesen Code dafür austauschen:' {df.ix [i, 1]: df.ix [i, 2], df.ix [i, 3]: df.ix [i, 4]} '. –
quapka
kann es N Anzahl von Zeilen oder Spalten geben. Also muss das iterieren. –