Parsowanie json do csv w pythonie

0

Hej musze curl'em lapac z bazy dane w formacie json i przeformatowac je i zapisac do pliku w postaci csv.

na ta chwile mam cos takiego ale brakuje pewnie jednej lini by dzialalo

#!/usr/bin/python
import json, csv ,sys

def read_json(filename):
    return json.loads(open(filename).read())

def write_csv(data,filename):
    with open(filename, 'w+') as outf:
        print "asd"
        writer = csv.DictWriter(outf, data[0].keys())
        writer.writeheader()
        for row in data:
            writer.writerow(row)
write_csv(read_json('input.json'), 'output.csv')
0

Wiesz przejrzalem wszystkie strony z 1 i 2 na googl'u w 'json to csv python parser' - cos zle robie ale nie moge tego zrobic, teraz mam

import csv, json, sys
#from tables import *

fileInput = 'input.json'
fileOutput = 'output.csv'

inputFile = open(fileInput)             # open json file
outputFile = open(fileOutput, 'w')      # load csv file

data = json.load(inputFile)             # load json content

inputFile.close()                       # close the input file

output = csv.writer(outputFile)         # create a csv.write
output.writerow(["took"])
for row in data:
        output.writerow([row.index[1]])
0

errory mi wyskakuja ze nie rozumie w ostatnich liniach row.index[1] czy row.index["took"] czy row.iterkeys()

0

Nie korzystałem z modułu json w Python ale po skopiowaniu Twojego kodu i użyciu go dla przykładowego json dodałem print statement (print(data)). Dzięki niemu widać, że data to dict. Np dla mojego json wygląda to tak:

{'widget': {'debug': 'on', 'window': {'title': 'Sample Konfabulator Widget', 'name': 'main_window', 'width': 500, 'height': 500}, 'image': {'src': 'Images/Sun.png', 'name': 'sun1', 'hOffset': 250, 'vOffset': 250, 'alignment': 'center'}, 'text': {'data': 'Click Here', 'size': 36, 'style': 'bold', 'name': 'text1', 'hOffset': 250, 'vOffset': 100, 'alignment': 'center', 'onMouseUp': 'sun1.opacity = (sun1.opacity / 100) * 90;'}}}

Z tego powodu funkcje typowe dla listy (index) nie będą działać. Stąd wynikają błędy które dostajesz. Przykładowe użycie polega na dostep przez użyciu klucza np.

data['widget'] (dla mojego json) albo iteracja przez wszystkie wartości np. for key in data: print(data[key]). Dlatego Twój parser json to csv wymaga znajomości formatu pliku json (i np. gdy dane są zagnieżdzone odpowiednio do nich się dostać np. data['widget']['window']['title']).

0

A dlaczego by zagniezdzonych jsonow nie sparsowac do jednego dicta (flat) a potem po prostu przerobic to do csv?

1 użytkowników online, w tym zalogowanych: 0, gości: 1