2017-05-22 8 views
1

私のcsvファイルから、使用する予定のデータを.jsに変換する必要があります。.csvファイルから.json - Pythonにデータを変換する

Lp.;Name;Surname;Desc;Unit;Comment 
1;Jan;Makowski;Inf;km; 
2;Anna;Nowak;Pts;km;Brak reakcji 

あなたは、列'comment'は常に、レコードを持っていないと私はそのように維持する必要が見ることができます。また、データ間には、設定する必要のあるタブがあります。

enter image description here

私は、ファイルをしました、私は今働いているが、それはのような行のデータ私のショー:

[{"Lp.;Name;Surname;Desc;Unit;Comment": "1;Jan;Makowski;Inf;km;"}, {"Lp.;Name;Surname;Desc;Unit;Comment": "2;Anna;Nowak;Pts;km;Brak reakcji"...] 

が私のpythonに新しいですし、私が定義する方法が分かりません私は何を得る必要があります。私はそれを行うために管理

@@編集...

import json 
import csv 

# Deklaracja danych 
fieldnames = ("Lp.", "Name", "Surname", "Desc", "Unit", "Comment") 

# Otwieranie plików 
with open('file.csv', 'r', encoding = "utf8") as csvfile: 
    reader = csv.DictReader(csvfile) # ,fieldnames) 
    rows = list(reader) 

# Zamykamy plik 
csvfile.close() 

# Tworzymy plik z danych 
with open('file.json', 'w', encoding = "utf8") as jsonfile: 
    json.dump(rows,jsonfile) 
    # jsonfile.write(s.replace(';', '/t')) 
# Zamykamy plik 
csvfile.close() 
+0

は、組み込みのcsvモジュールを見てください、[python2](HTTPS: //docs.python.org/2/library/csv.html)、[python3](https://docs.python.org/3.6/library/csv.html)を参照してください。ファイル内の各行のフィールドのリストを持つことができます。 – Pedru

+0

ええ、しばらくそれを見て、ちょうどそれらの行と列を構築する方法を控える –

+0

[CSVをJSON(特定の形式)にConvert CSVを変換する可能性があります](https://stackoverflow.com/questions/33642673/convert -csv-to-json-in-specific-format-using-python) – philshem

答えて

2

、これが最善の方法ではないかもしれませんそれを行うには、それはあなたに結果を与えることができます。

import csv 
import json 
with open('file.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=';') 
    data_list = list() 
    for row in reader: 
     data_list.append(row) 
data = [dict(zip(data_list[0],row)) for row in data_list] 
data.pop(0) 
s = json.dumps(data) 
print (s) 

出力:

[{"Comment": "", "Surname": "Makowski", "Name": "Jan", "Lp.": "1", "Unit": "km", "Desc": "Inf"}, {"Comment": "Brak reakcji", "Surname": "Nowak", "Name": "Anna", "Lp.": "2", "Unit": "km", "Desc": "Pts"}] 
+0

Iamはwierdエラーを受け取ります "リーダーの行:_csv.Error:イテレータはバイトではなく文字列を返す必要がありますモード?) "どうやってURの答えを得ることができますか? –

+0

私はあなたのデータをcsv拡張子を持つファイルにコピーしました。 – Arun

+0

私はあなたのpythonのバージョンを知っているかもしれませんか? – Arun

0

ソリューションの非常に簡単な例:私はこれがあなたの答えだと思う

import csv 

output = [] 
with open('your_file.csv', 'rb') as csvfile: 
    reader = csv.DictReader(csvfile) 
    output = [item for item in reader] 
json.dump(open('your_file.json'), output) 
+0

あなたはcsvfileではなくcsvreaderである必要がありますか? –

+0

'r'は 'open'のデフォルトモードです。 しかし、Pythonのドキュメントでは 'rb'モード(バイナリを読む)を使用しているので、私はそれに応じて答えを更新します –

1

パンダが内蔵されており、両方の.read_csv().to_json()。中間体として、インデックスやデータモデルの定義など、データを操作できるデータフレームを取得します。

import pandas as pd 
df = pd.read_csv('file.csv') 
# any operations on dataframe df 
df.to_json('file.json') 
+1

+1。注意:デフォルトでは 'to_json()'は列単位で出力します。あるいは、 'orient'パラメータを使用して行単位の出力を取得します。 'df.to_json(...、orient = 'records')'です。 –

関連する問題