我們正在運行一個已經花費了一個小時才能執行的程序(並且還沒有完成),所以我們想知道如果我們能夠改進我們的程序代碼,跑得更快。如何在Python中高效地預處理和解析JSON數據
我們的程序由兩部分組成:首先我們需要更改字符串,因爲我們使用JSON字典,並且所有項目的數據都具有相似的鍵(「軌道」) - 如果我們不這樣做,輸出會給出只有第一首歌曲。其次,我們需要將JSON數據打印到csv文件。
JSON文件的片段:(實際的文件是大約900 MB)
我們的代碼{
「VV」:{
「版本」:1, 「數據」:[
{
「軌道」:[
{
「時間」: 「YYYY-MM-DDTHH:MM:SS:MS」, 「TL」:{
「×」:10, 「Y」:11 }, 「BR」:{
「×」:20, 「Y」:20 } }, {
「時間」:「YYYY-MM-DDTHH:MM :SS:MS」, 「TL」:{
「×」:12, 「Y」:15 }, 「BR」:{
「×」:22, 「Y」:23 } } ], 「track」:[
{
「時間」: 「YYYY-MM-DDTHH:MM:SS:MS」, 「TL」:{
「×」:30, 「Y」:39 }, 「BR」: {
「×」:40, 「Y」:45 } }, {
「時間」: 「YYYY-MM-DDTHH:MM:SS:MS」, 「TL」:{
「x」:12, 「y」:18 }, 「br」:{
「×」:22, 「Y」:24 } } ] } ] } }
第一部分:
with open(r'filename.json') as json_file:
fil = json_file.read()
i = 0
print i
while ('track' in fil) :
fil = fil.replace('track', 'tr'+str(i), 1)
i = i + 1
print i
input_data = json.loads(fil)
data_d = input_data['VV']['Data'][0]
第二部分:
with open(r'output.csv', 'wb') as csv_file:
writer = csv.writer(csv_file)
i = 0
for track, data in data_d.items():
i = i+1 # Track
for item in data:
#TRACK
item_values = []
item_values.append(i)
#DAY
#print item['time']
day = item['time'][8:10]
item_values.append(day)
#COORDINATEN
item_values.append(item['tl']['x'])
item_values.append(item['tl']['y'])
item_values.append(item['br']['x'])
item_values.append(item['br']['y'])
#TIME
time = item['time'][11:13]+item['time'][14:16]+item['time'][17:19]+item['time'][20:23]
item_values.append(time)
writer.writerow(item_values)
在此先感謝您。
我想了解你的問題。首先,你需要用'tr'替換'track'。其次,你需要轉儲一個CSV文件。你想優化過程。是嗎? – Raiyan 2014-10-06 13:56:05
是的,那正是我們的問題。我們需要用tr0,tr1,tr2等替換軌道,因爲我們需要相同的密鑰。 – Marjolein 2014-10-06 14:01:57
你能改變上游輸出格式嗎?例如,每行輸出一個軌道(比如推文流)而不是創建一個大的json對象 – jfs 2014-10-06 14:09:12