2017-02-14 9 views
0

私はPythonで私の辞書からcsvを取得しようとします。私はcsvファイルを作成し、その中に辞書を置くことができます。問題は、ファイルを開くときにヘッダーを有効にし、値が1つの列にあることです。私はすべてのキーと値を別々の列に入れたい。たとえば、Python dictionary to csv excel

 column1 column2 column3  column4 
row 1 "name" "temp" "tempeinheit" "Druck" 
row 2 "test" 24  "C"    0.1 

これは次のコードです。

dict= [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"},{"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}] 
with open("C:\\test#\\test.csv","w",newline='') as csvfile: 

writer = csv.writer(csvfile,dialect="excel-tab") 

for row in dict: 
    if count == 0: 
     header=row.keys() 
     writer.writerow(header) 
     count=+1 
    writer.writerow(row.values()) 

更新:

私はちょうど2つのリストに辞書を変換します。 1つはキー用で、もう1つはデータ用で、writer.writerow(Data)で書き込みます。もう1つは、Excel 2013を使用し、新しい列にはデリミタではなく、区切り文字= ";"です。したがって、 ";"データを新しい列に入れることをExcelに指示します。

ありがとうございました

+0

あなた 'dict'が辞書ではありません、それはまた、辞書 –

+0

のリストです、あなたの変数' dict'に名前を付けないでください - あなたは標準をオーバーライドしています辞書のタイプ –

+0

YEs私はthatsリストを知っている。しかし、その場合でも私は私の投稿に記載したように保存したいと思っています – Dieter

答えて

0

あなたのコードを実行しようとしましたが、以下の問題が見つかりました。あなたはコードをそれに書き込みをしようとしたときに

  • インポートCSVエラー
  • ファイルを閉じました。
  • count変数が初期化されていませんでした。

ここに私の作業コードが追加されました。問題が発生した場合はお知らせください。

import csv 
dict= [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}, 
    {"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0}] 
with open("try.csv","a") as csvfile: 
    writer = csv.writer(csvfile,dialect="excel-tab") 
    count = 0 
    for row in dict: 
     if count == 0: 
      header=row.keys() 
      writer.writerow(header) 
      count=+1 
     writer.writerow(row.values()) 
+0

こんにちはありがとうが、カウントの初期化は単なるコピー貼りエラーであり、ファイルは私のc:\\ try.csvで動作します。私もそれを投稿するのを忘れて、それを叫んでください。 – Dieter

0

あなたはパンダとそのように試みることができます。

import pandas as pd 

d = [{"name" : "test", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}, 
    {"name" : "benni", "temp" : 24, "tempeinheit": "C", "druck" : 0.1, "druckeinheit": "Pa"}] 

df = pd.DataFrame(d) 

df = df[['name', 'temp', 'tempeinheit', 'druck','druckeinheit']] 
df.to_csv('filename') 
+0

それは私のコードのように、同じ出力を動作しません。 – Dieter