Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import numpy as np
- import pandas as pd
- from pandas.io.json import json_normalize
- import argparse
- import sys
- counter = 1
- my_dict = dict()
- def flatten_json(y):
- global my_dict
- out = []
- def flatten(x, pom=1, name=''):
- global my_dict, counter
- if type(x) is dict:
- for a in x:
- flatten(x[a], pom, name + a + '_')
- elif type(x) is list:
- i = 0
- for a in x:
- flatten(a, pom, name + str(i) + '_')
- i += 1
- elif name=='new row':
- counter+=1
- out.append(my_dict)
- my_dict = {}
- else:
- check = int(name[name.find('_') + 1])
- if check < counter:
- my_dict[name[:-1]] = str(x)
- else:
- flatten(x, pom+1, 'new row')
- my_dict[name[:-1]] = str(x)
- flatten(y)
- out.append(my_dict)
- my_dict = {}
- return out
- if __name__ == '__main__':
- parser = argparse.ArgumentParser(description='Converting json files into csv for Tableau processing')
- parser.add_argument(
- "-j", "--json", dest="json", help="/Users/viktorija/PycharmProjects/json_conv_csv/", metavar="FILE", required=True)
- args = parser.parse_args()
- with open(args.json, "r") as inputFile: # open json file
- json_data = json.loads(inputFile.read()) # load json content
- flat_json = flatten_json(json_data)
- final_data = json_normalize(flat_json)
- with open(args.json.replace(".json", ".csv"), "w") as outputFile: # open csv file
- # saving DataFrame to csv
- final_data.to_csv(outputFile, encoding='utf8', index=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement