2014-11-03 11 views
1

으로 변환합니다. 다음 json 객체 배열이 있다고 가정하고이를 tsv 형식으로 변환하고 싶습니다.json 객체의 배열을 tsv (파이썬)

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

아무에게도 좋은 해결책이 있습니까? (파이썬의 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

답변

3

첫 번째 단계는 예를 들어, 사용 파이썬 객체의 배열에 JSON 문자열로 변환하는 것입니다, json.loads .

최종 단계는 예를 들어 csv.DictWriter을 사용하여 파일에 파이썬 개체를 쓰는 것입니다.

다음은 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