blob: e7d67c91db922bc58d8e279afe88b059699ce3df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/env python3
#
# Convert JSON to CSV format
#
# References:
# [1] https://docs.python.org/3/library/json.html
# [2] https://docs.python.org/3/library/csv.html
# [3] http://stackoverflow.com/questions/1871524/convert-from-json-to-csv-using-python
# [4] http://json.parser.online.fr/
#
#
# Weitian LI <liweitianux@gmail.com>
# Created: 2012-08-31
#
# ChangeLogs:
# v3.5, 2015-11-09
# * Get column keys from the first input json block
# * Use python3
# v3.4, 2015-11-09
# * Add keys 'XPEAK_RA', 'XPEAK_DEC', and 'XPEAK_XCNTRD_dist (pix)'
# * Add 'colkeys' to record CSV column keys
# * Update file header description
# v3.3, 2013-10-14
# * add key `Unified Name'
# v3.2, 2013-05-29
# * add key `XCNTRD_RA, XCNTRD_DEC'
# v3.1, 2013-05-18
# * add key `Feature', corresponding to `collectdata_v3.1'
#
import sys
import csv
import json
from collections import OrderedDict
argc = len(sys.argv)
if (argc != 3):
print("usage:")
print(" "+ sys.argv[0]+ " <input_json> <output_csv>")
sys.exit(255)
infile = open(sys.argv[1], 'r')
data = json.load(infile, object_pairs_hook=OrderedDict)
infile.close()
# column keys
colkeys = list(data[0].keys())
with open(sys.argv[2], 'w') as csvfile:
outfile_writer = csv.writer(csvfile)
# CSV header row
outfile_writer.writerow(colkeys)
# CSV data rows
for row in data:
outfile_writer.writerow([ row.get(key) for key in colkeys ])
# vim: set ts=4 sw=4 tw=0 fenc=utf-8 ft=python: #
|