Skip to content Skip to sidebar Skip to footer

Convert Csv To A Nested Json While Formatting Values For Specific Keys To Numeric/int/float

I am trying to convert a CSV file to nested JSON, here's my CSV with first row as columns. CLID,District, attribute,value C001,Tebuslik, Name,Philip C001,Tebuslik,Age,34 C002,Honte

Solution 1:

Use str.isdigit to check the string and then use int.

Ex:

from csv import DictReader
from itertools import groupby
from pprint import pprint
import json

withopen(filename) as csvfile:
    r = DictReader(csvfile, skipinitialspace=True)
    data = [dict(d) for d in r]

    groups = []
    uniquekeys = []

    for k, g in groupby(data, lambda r: (r['CLID'], r['District'])):
        groups.append({
            "CLID": k[0],
            "District": k[1],
            "attributes": [{k:int(v) if v.isdigit() else v for k, v in d.items() if k notin ['CLID','District']} for d inlist(g)]  #Update
        })
        uniquekeys.append(k)

print(json.dumps(groups, indent = 4) + '\n}')

Post a Comment for "Convert Csv To A Nested Json While Formatting Values For Specific Keys To Numeric/int/float"