2016-09-27 8 views
0

Output CSv file現在、ファイルからのデータをPythonを使用してcsvファイルに保存しようとしています。 次のように私のデータが見えます:dictwriterを使用して、非構造化データをPythonを使用してCSVファイルに書き込みます。

data_list{} = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}] 

私の出力は次のようになります。

row t0  elems Tspan NP wave0 
0 8.69E-005 4 5E-006 625 123.65 
       96    333.56 
       187    3333.78 
            567.89 
            345678.77 
            34E-08 

まずヘッダが来るし、それらの下に値。私は、elemsとwave0を除くすべてのヘッダー部分と行部分を取得するのに成功しました。

のpythonコード:

with open('cc.csv','w', newline='') as out_file: 
    writer = csv.DictWriter(out_file, fieldnames=data_list[0].keys()) 
    writer.writeheader() 
    for data in data_list: 
      writer.writerow(data) 
+0

出力は間違いなくCSV形式です。なぜあなたはそのためにcsvモジュールを使いたいのですか? –

+0

私はデータをcc.csvファイルに入れています。そして、私はいくつかの列のデータを書くことができましたが、elemsのwave0のために、私はデリミタ空間に基づいて次の行にデータが来たいと思っています。 –

+0

data_listに2つの要素がある場合、出力はどのように見えますか? –

答えて

0

あなたdata_list変数内の辞書の後にあるように見えます。ご希望の出力を得るために、あなたが仕事の少しを行う必要があるとしている。

1つの辞書のリスト:

data_list = [{'row': '0', 't0': '8.69E-005', 'elems': ' 4 96 187 ', 'Tspan': '5E-006', 'NP': '625','wave0': '123.65 333.56 3333.78 567.89 345678.77 34E-08'}] 

まず、あなたの出力列を定義する必要があります。

output_cols = ['row', 't0', 'elems', 'Tspan', 'NP', 'wave0'] 

は、その後、一緒に辞書のvalues、その後*zip*からすべてのこれらのリストをリストを作成する必要があります。

# Python2 
from itertools import izip_longest 
import csv 

data = [data_list[0].get(x).strip().split(" ") for x in output_cols] 
data = izip_longest(*data) 
with open('somefile.csv','w') as outfile: 
    file_writer = csv.writer(outfile, delimiter="\t", lineterminator="\n") 
    file_writer.writerow(output_cols) 
    file_writer.writerows(data) 

python3を使用している場合、from itertools import izip_longestfrom itertools import zip_longestに置き換えてください。

答えは、すべてのデータがその最初の辞書(data_list[0])であることを前提としています。あなたの実際のリストがそれより長い場合、より多くのデータを共有してください。 somefile.csv

内容:

row  t0  elems Tspan NP  wave0 
0  8.69E-005 4  5E-006 625  123.65 
       96      333.56 
       187     3333.78 
             567.89 
             345678.77 
             34E-08 

私はこのことができます願っています。

+0

ありがとうございます。それは働いた:) –

+0

somefile.csvは有効ではありませんCSV(RFC 4180) – Marichyasana

+0

私は私が従うかわからない。あなたは詳細を教えていただけますか? – Abdou

関連する問題