2014-11-03 55 views
1

假設我有以下json對象數組,我想將它們轉換爲tsv格式。將json對象數組轉換爲tsv(python)

[ 
    { 
    "x": "1", 
    "y": "2", 
    "z": "3" 
    }, 
    { 
    "x": "6", 
    "y": "7", 
    "z": "B" 
    } 
] 

有沒有人有一個很好的解決方案呢? (python的JSON模塊僅允許讀取JSON對象,但如何讀取JSON對象的陣列?)

x<TAB>y<TAB>z 
1<TAB>2<TAB>3 
6<TAB>7<TAB>8 
+0

你嘗試過什麼?當你導入JSON對象時,它的格式應該是[csv的DictWriter](https://docs.python.org/2/library/csv.html#csv.DictWriter)所要求的格式。 – whereswalden 2014-11-03 03:10:52

回答

3

的第一步是從JSON字符串轉換爲使用Python對象的陣列,例如,json.loads

最後一步是使用例如csv.DictWriter將Python對象寫入文件。

這是一個完整的程序,演示瞭如何從JSON字符串轉換爲製表符分隔值文件。

import json 
import csv 

j = json.loads(r'''[ 
    { 
    "x": "1", 
    "y": "2", 
    "z": "3" 
    }, 
    { 
    "x": "6", 
    "y": "7", 
    "z": "B" 
    } 
]''') 

with open('output.tsv', 'w') as output_file: 
    dw = csv.DictWriter(output_file, sorted(j[0].keys()), delimiter='\t') 
    dw.writeheader() 
    dw.writerows(j) 
0

一個有點重手的方法是使用熊貓

> import sys 
> import pandas as pd 
> table = pd.read_json('''[ 
    { 
    "x": "1", 
    "y": "2", 
    "z": "3" 
    }, 
    { 
    "x": "6", 
    "y": "7", 
    "z": "B" 
    } 
]''', orient='records') 
> table.to_csv(sys.stdout, sep='\t', index=False) 

x y z 
1 2 3 
6 7 B