Ich habe dieses Skript von hier genommen:
%Vor%Als ich es in IDLE versuchte, bekam ich den Fehler
%Vor%Aber ich habe es versucht
%Vor%erneut und dann gedruckt
%Vor%Aber wenn ich versuche, es als Skript auszuführen, funktioniert es nicht, ich bekomme die gleiche Fehlermeldung.
Kann jemand helfen, den Fehler zu beheben?
(Und gibt es gültige JSON aus?)
Danke
Bearbeiten
Danke für die Antworten. Es scheint, dass dies nicht der richtige Weg ist, eine CSV-Datei in das JSON-Format zu konvertieren. Ich versuche nur, die CSV-Datei mit Daten darin zu konvertieren, so dass ich loaddata
verwenden kann, um meine SQLite3-Datenbank in Django aufzufüllen. Sehen Sie sich diesen Thread in der django-Gruppe an: Ссылка für den Versuch, das csv2json.py-Snippet zu verwenden. Und noch ein Thread heute in OS (Sorry, ich kann nicht 2 Links aufnehmen). Ich würde eine einfache Möglichkeit der Umwandlung von CSV in JSON schätzen. Oder die Methode, die Sie verwenden, um Ihre Django-Datenbank zu füllen, die ich stattdessen verwenden sollte. Danke für die Hilfe.
Ändern Sie die verschachtelte for
-Schleife zu:
und, nein, print out
gibt kein gültiges JSON aus - benutze print json.dumps(out)
(du musst natürlich auch import json
haben - das ist ein Python 2.6 Standard-Bibliotheksmodul, aber du kannst Versionen finden, die mit 2.5 arbeiten wenn das ist was du brauchst).
Mit dem CSV-Modul haben Sie bereits eine dict reader eingebaut! Hier ist ein Beispielskript, das als Kommandozeilenwerkzeug verwendet werden kann:
%Vor%Vielleicht versuchen Sie eine leere Zeile am Ende der Datei zu analysieren
%Vor%Auch csv.DictReader kann tun, was Sie schon wollen
%Vor%Da Sie JSON nicht wirklich erstellen, bin ich mir bei der letzten Frage nicht sicher. Sie drucken nur ein Python-Wörterbuch. Sie sind meistens JSON, aber nicht immer.
Du solltest also ein gutes json
Modul finden und das verwenden. Wenn Sie Python 2.6 haben: Ссылка
Außerdem hat csv
einen Wörterbuchleser, der all dies in viel kürzerer Form und einfacher zu handhaben macht. Ссылка
Bearbeiten.
%Vor%So etwas funktioniert normalerweise besser.