Skip to content Skip to sidebar Skip to footer

Csv To Json With Python, Json In Rows

I would like to covert a CSV to a set of JSON objects with Python, formatted in rows. I tried this script below, put together from a couple SO answers, but this formats this way: {

Solution 1:

import csv
import json

CSV_PATH = 'file.csv'JSON_PATH = 'demo.json'withopen(CSV_PATH, 'r') ascsv_file:
    reader = csv.DictReader(csv_file)
    withopen(JSON_PATH, 'w') asjson_file:
        for row inreader:
            json_file.write(json.dumps(row) + '\n')

str(row) gives the wrong kind of quotes, don't use it. You won't be able to read the file with json.

Solution 2:

First, the CSV file is not formatted properly, I had to reformat file.csv to look like:

SUM_F,SUM_I,SUM_P,SUM_PI,SUM_Bt,SUM_BI,SUM_M,SUM_MI,Year,Month15,3963,14,993,0,91,1,2879,2009,13,4,5,6,0,971,1,8,9,10

in order to make it work - I'm not sure if that's the uneven number of spaces between the tokens or other reason.

Second, I modified the code:

import sys, getopt
import csv
import json


CSV_PATH = '/path/file.csv'JSON_PATH = '/path/demo.json'

csv_file = csv.DictReader(open(CSV_PATH, 'r'))

f = file(JSON_PATH, 'w')
for row incsv_file:
    f.write(str(row)+"\n")

and the result (file) looks like:

{'SUM_I': '3963', 'SUM_M': '1', 'SUM_BI': '91', 'Month': '1', 'SUM_MI': '2879', 'SUM_F': '15', 'Year': '2009', 'SUM_Bt': '0', 'SUM_P': '14', 'SUM_PI': '993'}
{'SUM_I': '4', 'SUM_M': '1', 'SUM_BI': '971', 'Month': '10', 'SUM_MI': '8', 'SUM_F': '3', 'Year': '9', 'SUM_Bt': '0', 'SUM_P': '5', 'SUM_PI': '6'}

Post a Comment for "Csv To Json With Python, Json In Rows"