He escrito el código para leer un archivo CSV en un diccionario de Python, que funciona bien. Estoy tratando de devolver el diccionario a un archivo CSV. He escrito lo siguiente:Diccionario de Python a 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)
En el último bloque, listWriter no escribirá nada a la CSV aunque se imprimirá una. Creo que esto tiene algo que ver con el desorden de un diccionario. Realmente necesito escribir el FID y cada una de las claves asociadas con cada fID (fClassRange, por ejemplo, "5.0 a 5.25") y luego el valor fArea asociado con cada fClassRange al CSV, pero ni siquiera he llegado tan lejos en mi código ya que no puedo descifrar cómo escribir incluso el FID.
Miré en el uso de DictWriter
, pero no puedo encontrar la manera de indicarle lo que los nombres de campos requeridos son.
que recomendar de Kenneth Reitz [tablib] (http: // docs.python-tablib.org/en/latest/). Hace más de lo que estabas buscando aquí, así que esta no es una respuesta directa, solo quieres recomendar esta biblioteca a otros. Tiene una gran API fácil de usar y puede serializar a csv, tsv, json, yaml y xlsx sin esfuerzo. – hangtwenty