2017-02-17 24 views
0

シンプルなCSVからPythonを使ってネストJSONを作成する方法を探しています。私はこれまで、CSVからJsonを作成する能力があり、それが想定されているように見えます。しかし、CSVの属性を1つのJSON配列にまとめたいのは、一緒に属しているからです。シンプルなCSVからPythonを使ってネストJSONを作成する方法

入力CSV:

Ansprechpartner, Telefon, Fax, eMail Elin Persson,+46 (0)243 224360,+46 (0) 243 81322,[email protected]

出力JSON:

[ 
    { 
    "Ansprechpartner": ["Elin Persson","+46 (0)243 224360","+46 (0) 243 81322","[email protected]"] 
    } 
] 

私の既存の出力:

[ 
    { 
    "Fax": "+46 (0) 243 81322", 
    "eMail": "[email protected]", 
    "Telefon": "+46 (0)243 224360", 
    "Ansprechpartner": "Elin Persson" 
    } 
] 

Pythonのコード:

import csv 
import json 


#open CSV/read/create list 
with open('Ansprechpartner.csv') as f: 
    reader = csv.DictReader(f)  
    rows = list(reader) 

#open JSON/input list 
with open('test.json','w') as f: 
    json.dump(rows,f,indent=2, ensure_ascii=False) 

JSOnファイルにこのアレイを作成するのを手伝ってもらえますか? ありがとう

+0

複数の人がいますか?その場合、CSVはどのように見えますか? – languitar

+0

いいえ、複数の人が存在することはできません。 –

答えて

0

DictReaderは情報をマップするため、csv.reader()メソッドを使用する必要があります。

与えられた csvfileの行を繰り返し処理する読者オブジェクトを返します。 csvfileは、イテレータ プロトコルをサポートし、next()メソッドが呼び出されるたびに文字列を返すオブジェクトであればどのオブジェクトでもかまいません。 ファイルオブジェクトとリストオブジェクトの両方が適しています。

そして、それをリストに変換するだけで簡単に操作できます。

import csv 
import json 

rows = [] 

with open('a.csv', 'rb') as f: 
    reader = csv.reader(f) 
    lines = list(reader) 
    for i in range(0, len(lines), 2): 
     rows.append({lines[i][0]: lines[i + 1]}) 

with open('test.json', 'w') as f: 
    json.dump(rows, f, indent=2, ensure_ascii=False) 

そして、あなたが取得します:

[ 
    { 
    "Ansprechpartner": [ 
     "Elin Persson", 
     "+46 (0)243 224360", 
     "+46 (0) 243 81322", 
     "[email protected]" 
    ] 
    } 
] 

は、この情報がお役に立てば幸いです。

関連する問題