1
至所以我有一個程序,讀取JSON,變平,並轉儲CSV:添加列標題使用python 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)
該工程確定,有一個問題。 我的程序只需要從smallR.txt的第一行開始的列標題(加上它添加了「種族主義」列)。
後面的一些數據(smallR.txt here)有不同的列。這導致輸出不太正確,請參閱small.csv here。
是否有一種簡單的方法來適應我的程序,以處理後續行中找到的新列標題?
感謝哈維爾,檔案非常龐大,所以我會給你第二種方法。 Flatten_json是[從這裏]導入的(https://medium.com/@amirziai/flattening-json-objects-in-python-f5343c794b10#.v8fb0z7bt) – schoon