1
を読んだので、私はJSONを読み込むプログラムを持って、それを平らにし、CSVをダンプします:は、パイソンを使用してCSVファイルに列ヘッダを追加するJSON
import json
import unicodecsv as csv
import sys
import glob
import os
from flatten_json import flatten_json
def createcolumnheadings(cols):
#create column headings
columns = cols.keys()
columns = list(set(columns))
return columns
doOnce=True
path=os.chdir(sys.argv[1])
for f in glob.glob("smallR.txt"):
fName=os.path.splitext(f)[0]
out_file= open('csv/' + fName+'.csv', 'wb')
csv_w = csv.writer(out_file, delimiter="\t", encoding='utf-8' )
with open(f, 'r') as handle:
for line in handle:
data = json.loads(line)
flatdata =flatten_json(data)
if doOnce:
columns=createcolumnheadings(flatdata)
columns.insert(0,'racism')
csv_w.writerow(columns)
doOnce=False
flatdata['racism']= 0
csv_w.writerow(flatdata.get(x, u'') for x in columns)
これは、1つの問題で、[OK]を動作します。 私のプログラムは、smallR.txtの最初の行から列の見出しを取得します(プラス 'Racism'列を追加します)。
後者のデータの一部(smallR.txt here)には、異なる列があります。この結果、結果は正しくありません。small.csv hereを参照してください。
私のプログラムを後の行で見つかる新しい列見出しを扱うための簡単な方法はありますか?
ありがとうJavier、ファイルが巨大なので、私はあなたの2番目の方法を行って行きます。 Flatten_jsonは[ここ]からのインポートです(https://medium.com/@amirziai/flattening-json-objects-in-python-f5343c794b10#.v8fb0z7bt) – schoon