2011-08-02 30 views
27

以下のスクリプトを使用して、Pythonで文字列のリストの内容を含むcsvファイルを作成しようとしています。しかし、出力ファイルを確認すると、すべての文字がコンマで区切られていることがわかります。すべての文字ではなく、リスト内の個々の文字列を区切るようにCSV.writerに指示するにはどうすればよいですか?この場合、私はSnow LeopardでPython 2.6を使用しています。PythonでExcel CSVファイルに文字列のリストを書き込む

私はPythonのガイドをチェックして、特定の何かを見つけることができませんでした:
http://www.python.org/dev/peps/pep-0305/#managing-different-dialects

import csv 

# Define Data 
RESULTS = ['apple','cherry','orange','pineapple','strawberry'] 

# Open File 
resultFyle = open("output.csv",'wb') 

# Create Writer Object 
wr = csv.writer(resultFyle, dialect='excel') 

# Write Data to File 
for item in RESULTS: 
    wr.writerow(item) 
+2

は、デフォルトの方言である、あなたはそれを指定する必要はありません。 – agf

答えて

51

csv.writerwriterowメソッドは引数としてiterableをとります。結果セットはリスト(列)のリスト(行)でなければなりません。

csvwriter.writerow(row) 

は現在の表現形式に基づいて書式ライターのファイルオブジェクトへの行パラメータを、書きます。

いずれかの操作を行います。

import csv 
RESULTS = [ 
    ['apple','cherry','orange','pineapple','strawberry'] 
] 
with open("output.csv",'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerows(RESULTS) 

か:修正する

import csv 
RESULT = ['apple','cherry','orange','pineapple','strawberry'] 
with open("output.csv",'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerow(RESULT) 
+1

ドキュメントへのリンク:[csv module、Writer Objects](http://docs.python.org/library/csv.html?highlight=csv#writer-objects) – crashmstr

+0

@Andrew:もう1つはうまくいきます。単一行を書く必要があるかもしれませんが、おそらくより適切です(あなたの問題を解決した場合に回答を受け入れたものとしてマークしたいと思うかもしれません)。 – GaretJax

+0

@crashmstr:ありがとう、リンクをインラインで追加しました。 – GaretJax

14

非常に簡単に、あなただけのリストにのwriterowするパラメータをオンにする必要があります。

for item in RESULTS: 
    wr.writerow([item,]) 
3

私は少し遅れだけど、作品(とcsvを使用する必要はありません)私が見つけた何かがあなたのリスト内のすべての要素のためにあなたのファイルへの書き込みを行うforループを書くことです。

# Define Data 
RESULTS = ['apple','cherry','orange','pineapple','strawberry'] 

# Open File 
resultFyle = open("output.csv",'w') 

# Write data to file 
for r in RESULTS: 
    resultFyle.write(r + "\n") 
resultFyle.close() 

このソリューションは、すでに提供されたものよりも良くある場合、私は知りませんが、それはより密接にあなたのオリジナルのロジックを反映しているので、私は共有したいと思いました。

0

ブール型列を持つ複数の行を書き込みます(上記の例はGaretJaxとEran?を使用しています)。

import csv 
RESULT = [['IsBerry','FruitName'], 
      [False,'apple'], 
      [True, 'cherry'], 
      [False,'orange'], 
      [False,'pineapple'], 
      [True, 'strawberry']] 
with open("../datasets/dashdb.csv", 'wb') as resultFile: 
    wr = csv.writer(resultFile, dialect='excel') 
    wr.writerows(RESULT) 

結果:

df_data_4 = pd.read_csv('../datasets/dashdb.csv') 
df_data_4.head() 

出力:私はエクセル

IsBerry FruitName 
    0 False apple 
    1 True cherry 
    2 False orange 
    3 False pineapple 
    4 True strawberry 
関連する問題