Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. import json
  2. import numpy as np
  3. import pandas as pd
  4. from pandas.io.json import json_normalize
  5. import argparse
  6. import sys
  7.  
  8. counter = 1
  9. my_dict = dict()
  10.  
  11. def flatten_json(y):
  12. global my_dict
  13. out = []
  14. def flatten(x, pom=1, name=''):
  15. global my_dict, counter
  16. if type(x) is dict:
  17. for a in x:
  18. flatten(x[a], pom, name + a + '_')
  19. elif type(x) is list:
  20. i = 0
  21. for a in x:
  22. flatten(a, pom, name + str(i) + '_')
  23. i += 1
  24. elif name=='new row':
  25. counter+=1
  26. out.append(my_dict)
  27. my_dict = {}
  28. else:
  29. check = int(name[name.find('_') + 1])
  30. if check < counter:
  31. my_dict[name[:-1]] = str(x)
  32. else:
  33. flatten(x, pom+1, 'new row')
  34. my_dict[name[:-1]] = str(x)
  35.  
  36.  
  37. flatten(y)
  38.  
  39. out.append(my_dict)
  40. my_dict = {}
  41.  
  42. return out
  43.  
  44.  
  45. if __name__ == '__main__':
  46. parser = argparse.ArgumentParser(description='Converting json files into csv for Tableau processing')
  47. parser.add_argument(
  48. "-j", "--json", dest="json", help="/Users/viktorija/PycharmProjects/json_conv_csv/", metavar="FILE", required=True)
  49.  
  50. args = parser.parse_args()
  51.  
  52. with open(args.json, "r") as inputFile: # open json file
  53. json_data = json.loads(inputFile.read()) # load json content
  54.  
  55. flat_json = flatten_json(json_data)
  56.  
  57. final_data = json_normalize(flat_json)
  58. with open(args.json.replace(".json", ".csv"), "w") as outputFile: # open csv file
  59. # saving DataFrame to csv
  60. final_data.to_csv(outputFile, encoding='utf8', index=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement