-1
Ich habe den folgenden Code, um durch meine CSV-Werte zu durchlaufen. Eingangsdaten (Sample.csv
):Python CSV-Konvertierung
name,city
jack,nj
matt,ny
und erzeugen Ausgangs in JSON. Erforderlich Ausgabe
[
{"name": "jack","city": "PA"},
{"name": "matt","city": "CA"}
]
Ausgabe von Code:
[{"name,city": "jack,PA"};{"name,city": "matt,CA"};]
Codebeispiel:
#!/usr/bin/python
import json
import csv
csvfile = open('sample.csv', 'r')
jsonfile = open('sample.csv'.replace('.csv','.json'), 'w')
jsonfile.write('{\n[\n')
fieldnames = csvfile.readline().replace('\n','').split(';')
reader = csv.DictReader(csvfile, fieldnames, delimiter=';')
from collections import OrderedDict
for row in reader:
json.dump(OrderedDict([(f, row[f]) for f in fieldnames]), jsonfile, indent=4)
jsonfile.write(';\n')
jsonfile.write(']\n}')
fertige Ausgabe wird nicht in Schlüsselwertpaar auszurichten.
FYI brauchen Sie nicht mit 'fieldnames' direkt, wenn die erste Zeile der CSV-Datei * zu behandeln ist * die Feldnamen. Außerdem ist nicht klar, warum Sie den JSON in der Ausgabedatei manuell verändern. Da das Trennzeichen eindeutig '' '' ist, verwenden Sie '' '' ?! – jonrsharpe
Ich bin neu in Python, ich habe andere Beispiele ausprobiert, aber das ist Wert an eine Liste anhängen, die viel Zeit bei der Konvertierung von Dateien über 1 GB dauert. Stattdessen möchte ich an die json-Ausgabedatei anhängen, anstatt sie im Speicher zu behalten. Dieses ist der Code, der mich näher zu dem brachte, was ich andere Lösung brauchte: http://stackoverflow.com/a/32158933/884808 – jb04
Aber Sie schließen das Array nach jedem Einzelteil darin, und unerklärlicherweise verwenden Sie Semikolons innerhalb es . Wenn Sie JSON manuell schreiben, empfehle ich, mit der gültigen Syntax vertraut zu sein. – jonrsharpe