2017-03-05 84 views
-3

這裏是我file_t.JSON是從申請的內容寫入CSV/JSON文件JSON鍵和值到CSV文件中的蟒蛇

{"w1":"R"} 
{"w2":"R2"} 
{"w3":"R3"} 
{"w4":"R4"} 
{"w5":"R5"} 

我期待,下面我的代碼應該給我下面的結果期待output.csv

w1 r 
w2 R2 
w3 R3 
W4 R4 
w5 R5 

這裏是我的代碼

import csv 

f1 = file ("output.csv","w") 

f2 = file ("file_t.JSON","rU") 

with open("file_t.JSON") as f: 
    csvr = csv.reader(f, delimiter=' ') 
    csvr.next() 
    for rec in csvr: 
     key, values_txt = rec 
     values = values_txt.split(',') 
     print key, values 
     f1.write(values) 

它不打印,寫入到輸出文件。

+0

這不是有效的JSON。那個例子應該代表多個JSON文件,每行一個?或者它只是一個錯字,在對象之間沒有逗號? – DavidO

+0

你的代碼實際上有錯誤,這是我通過運行你的代碼得到的:Traceback(最近調用最後一個):文件「csv_test.py」,第11行,在 key,values_txt = rec ValueError:需要多於1個值解壓變量* rec *是一個只包含一個元素的數組,它是您的json文件的整個行。你可以參考@ mhawke的答案找出正確的解決方案。 – zhou

回答

2

逐行讀取JSON文件,並使用json.loads()將每行轉換爲Python字典。然後將其寫入CSV文件:

import csv 
import json 

with open("file_t.JSON") as infile, open('output.csv', 'w') as outfile: 
    writer = csv.writer(outfile, delimiter=' ') 
    for line in infile: 
     d = json.loads(line) 
     writer.writerows(d.items()) 
+0

如何在col1和col2中寫入相同的內容,而不是隻寫入col1中? –

+0

如果您將_space_作爲字段分隔符(如同您的示例),則它們位於第1列和第2列中。如果你想要一個不同的分隔符指定,當你實例化'csv.writer',或者你可以省略它,如果你想要一個逗號。 – mhawke