Napisałem kod do odczytu CSV do słownika Pythona, który działa dobrze. Próbuję przywrócić słownik do pliku CSV. Napisałem:Python Dictionary to CSV
import csv
itemDict={}
listReader = csv.reader(open('/Users/broberts/Desktop/Sum_CSP1.csv','rU'), delimiter = ',', quotechar='|')
for row in listReader:
fID = row[0]
fClassRange = row[1]
fArea = row[2]
if itemDict.has_key(fID):
itemDict[fID][fClassRange]=fArea
else:
itemDict[fID] = {'5.0 to 5.25':'','5.25 to 5.5':'','5.5 to 5.75':'','5.75 to 6.0':'','6.0 to 6.25':'','6.25 to 6.5':'','6.5 to 6.75':'','6.75 to 7.0':'','7.0 to 7.25':'','7.25 to 7.5':'','7.5 to 7.75':'','7.75 to 8.0':'','8.0 to 8.25':'',}
itemDict[fID][fClassRange]=fArea
listWriter = csv.writer(open('/Users/broberts/Desktop/Sum_CSP1_output.csv', 'wb'), delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for a in itemDict:
print a
listWriter.writerow(a)
W ostatnim bloku, listWriter nie zapisuje niczego w CSV, mimo że wypisze a. Uważam, że ma to coś wspólnego z nieumorzonym słownikiem. Naprawdę muszę napisać fID i każdy z kluczy powiązanych z każdym fID (fClassRange np. "5.0 do 5.25"), a następnie wartość fArea powiązana z każdym fClassRange do CSV, ale nie dostałem nawet tak daleko w mój kod, ponieważ nie mogę wymyślić, jak napisać nawet FID.
Przyjrzałem się używaniu DictWriter
, ale nie mogę się dowiedzieć, jak określić, jakie są wymagane nazwy fieldnames.
musiał polecić Kenneth Reitz za [tablib] (http: // docs.python-tablib.org/en/latest/). Robi więcej niż to, czego szukałeś tutaj, więc nie jest to bezpośrednia odpowiedź, po prostu chcesz polecić tę bibliotekę innym. Ma świetny, łatwy w użyciu interfejs API i możesz serializować do csv, tsv, json, yaml i xlsx bez wysiłku. – hangtwenty