CSV nach JSON-Skript
Nahm ich das Skript aus hier:
import csv
from itertools import izip
f = open( '/django/sw2/wkw2/csvtest1.csv', 'r' )
reader = csv.reader( f )
keys = ( "firm_url", "firm_name", "first", "last", "school", "year_graduated" )
out = []
for property in reader:
property = iter( property )
data = {}
for key in keys:
data[ key ] = property.next()
out += [ data ]
print out
Als ich es versucht habe im IDLE hab ich den Fehler
Traceback (most recent call last):
File "<pyshell#13>", line 5, in <module>
data [key] = property.next()
StopIteration
Aber ich versuchte
print out
wieder und dann wird es gedruckt
[{'school': 'The George Washington University Law School', 'last': 'Abbas', 'firm_url': 'http://www.whitecase.com/aabbas', 'year_graduated': ' 2005', 'firm_name': 'White & Case', 'first': ' Amr A '}, {'school': 'Ernst Moritz Arndt University Greifswald', 'last': 'Adam', 'firm_url': 'http://www.whitecase.com/kadam', 'year_graduated': ' 2004', 'firm_name': 'White & Case', 'first': ' Karin '}, {'school': 'Tashkent State Law Institute', 'last': 'Adjivefayev', 'firm_url': 'http://www.whitecase.com/vadjivefayev', 'year_graduated': ' 2002', 'firm_name': 'White & Case', 'first': ' Vilen '}]
Aber wenn ich versuche, führen Sie es wie ein Skript, es funktioniert nicht, ich bekomme die gleiche Fehlermeldung.
Kann jemand helfen den Fehler beheben?
(Und ist es die Ausgabe gültiges json?)
Dank
Bearbeiten
Danke für die Antworten. Es scheint, dass dies nicht der richtige Weg zu konvertieren eine csv-Datei json-format. Ich bin nur versuchen, konvertieren Sie die csv-Datei mit Daten in es so, dass ich loaddata
zum Auffüllen meiner sqlite3-Datenbank in django. Siehe diesen thread in der django-Gruppe: http://groups.google.com/group/django-users/browse_frm/thread/a00b529ba2147d91 für meinen Versuch zu verwenden csv2json.py snippet". Und in einem anderen thread heute in OS (Sorry, ich darf keine 2 links). Ich würde mich über eine einfache Möglichkeit der Umwandlung von csv nach json. Oder die Methode, die Sie verwenden, füllen Sie Ihre django-Datenbank, die ich verwenden soll, statt. Vielen Dank für die Hilfe.
- Die OS-thread: stackoverflow.com/questions/1882469/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die verschachtelte
for
Schleife:und, Nein,
print out
wird nicht emittieren gültiges JSON -- verwendenprint json.dumps(out)
(Sie müssenimport json
natürlich auch-das ist ein Python-2.6-standard-Bibliothek Modul, aber finden Sie Versionen arbeiten mit 2,5, wenn das, was Sie brauchen).Mit der CSV-Modul Sie bereits eine dict-reader eingebaut! Hier ist ein Beispiel-Skript, das verwendet werden kann als ein Kommandozeilen-tool:
Vielleicht sind Sie versucht, zu analysieren, eine leere Zeile am Ende der Datei
Auch csv.DictReader tun können, was Sie wollen, schon
Da bist du nicht erstellen, JSON, ich bin nicht sicher über die Letzte Frage. Du bist nur zu drucken ein Python-dictionary. Sie sind meist JSON, aber nicht immer.
So sollten Sie eine gute
json
Modul und verwenden. Wenn Sie Python 2.6: http://docs.python.org/library/json.htmlAuch
csv
ein dictionary reader, der tut all dies in einer viel kürzeren und leichter zu Leben, mit form. http://docs.python.org/library/csv.html#csv.DictReaderBearbeiten.
Sowas in der Regel besser funktioniert.