CSV zu json

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BaseFloor
User
Beiträge: 25
Registriert: Donnerstag 16. November 2017, 11:06

Hallo,
ich möchte eine csv Datei in eine json Datei konvertieren. Ich habe bisher diesen Code. Mein Problem ist,
dass alles in Zeile kommt.

import csv
import json

# Constants to make everything easier
CSV_PATH = 'C:\\Users\\Continental\\Desktop\\Replace\\Old.csv'
JSON_PATH = 'C:\\Users\\Continental\\Desktop\\Replace\\New.json'

# Reads the file the same way that you did
csv_file = csv.DictReader(open(CSV_PATH, 'r'))

# Created a list and adds the rows to the list
json_list = []
for row in csv_file:
json_list.append(row)

# Writes the json output to the file
open(JSON_PATH, 'w').write(json.dumps(json_list))


Das CSv/Usrprungsformat sieht wie folgt aus:
Peter,Paul
Patrick,Peter
Susi,Strolch
Peter, Paul
Hans,Maria
Paul, Julian

Nach der Konvertierung mit diesem Code sieht es nun so aus:

[["Peter", "Paul"], ["Patrick", "Peter"], ["Susi", "Strolch"], ["Peter", " Paul"], ["Hans", "Maria"], ["Paul", " Julian"]]


Dies entspricht nicht dem json-Format. wie bekomme ich genau die Absätze zwischen den Blöcken, also nach dem Komma außerhalb der eckigen
Klammern ?
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Natuerlich entspricht das deinem Format. Es ist JSON. Das braucht keine neuen Zeilen, um Datensaetze zu trennen, und aus Gruenden der Sparsamkeit fuegt es darum keine Formatierung ein.

Wenn du das willst, kannst du einen Parameter indent an json.dumps uebergeben, mit dem du pretty-printing einschaltest. Naeheres dazu in der Dokumentation.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@BaseFloor: Benutze CodeBox, damit man Deinen Code hier im Forum auch lesen kann. Der gezeigte Code führt nicht zum gezeigten Output. Sollte das für die Beantwortung Deiner Frage relevant sein, kann man Dir nicht richtig helfen.

Wo hast Du ein Problem mit dem völlig korrekten JSON-Output?
BaseFloor
User
Beiträge: 25
Registriert: Donnerstag 16. November 2017, 11:06

Wenn du das willst, kannst du einen Parameter indent an json.dumps uebergeben

Wie würde das aussehen? Wie kann ich den indent an jsoon.dumps übergeben ?
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@BaseFloor: wie man Parameter übergibt, steht ziemlich am Anfang jedes Tutorials, wenn es darum geht, Funktionen aufzurufen. Wobei `indent` vielleicht auch nicht das Ergebnis liefert, das Du Dir wünschst.

Nochmal:
1. Der Output stimmt nicht mit dem gezeigten Code überein. Was von beidem ist also richtig?
2. Warum benötigst Du JSON mit bestimmten Zeilenumbrüchen?
__deets__
User
Beiträge: 14541
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich behaupte mal, der Code ist eine Abwandlung von

https://stackoverflow.com/questions/381 ... n/38170302

Der englische Kommentar und die etwas sehr kompakte Schreibweise legen das nahe...

@basefloor: du musst schon ein paar Grundlagen zum programmieren in Python lernen, sonst wird das nichts. Computer sind notorisch schlecht darin, Ratespiele zu spielen. Die wollen es immer ganz genau wissen.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: da frag ich mich, warum jemand die dritte schlecht bewertete Lösung nimmt und nicht die mit 14 Punkten sehr gute.
Antworten