2016-10-26 18 views
-2

私はcsvファイルに書きたいPython辞書を持っています。次のように 辞書の形式は次のとおりです。Python:文字列中のカンマを無視してcsvに書き込む

{'title': u'A Preface to Democratic Theory.', 'year': u'1957'} 
{'title': u'Joseph A. Schumpeter, Capitalism, Socialism, Democracy, New York 1942', 'year': None} 

問題は、タイトルに「コンマ」です。キー値にカンマがあるので、csvはそれを別のセルに分割します。だから、私はJoseph A. Schumpeterを第一の細胞に、Capitalismを第二の細胞に、などに持っています。ここ は、CSVファイルを書き込むための私のコードです:

def make_csv(mydict): 
    with open('mydata.csv', 'a') as f: 
    writer = csv.DictWriter(f,fieldnames=[""], delimiter=',') 
    writer.writeheader() 

    [f.write('{1},'.format(key, normalize(value))) for key, value in mydict.items()] 

誰かが助けることはできますか?

+4

なぜライターオブジェクトを無視していますか? ouが 'writer.writerow()'を使うと、カンマで適切に値が引用されます。 –

+1

なぜ 'fieldnames = [" "]'を設定するのですか? –

+1

'writer = csv.DictWriter(f、fieldnames = ['タイトル'、 '年'))'、 'writer.writerow(mydict)'です。毎回ファイルを再オープンしないと参考になります。 * once *ファイルを開き、 'DictWriter'を一度作成してから' dict'行を書き出してください。 –

答えて

1

fieldnamesを指定してDictWriterwriterowメソッドを使用するのはなぜですか。

あなたは、ヘッダーを必要としない場合は、writeheaderをスキップすることができます

def make_csv(list_of_dicts): 
    with open('mydata.csv', 'a') as f: 
     writer = csv.DictWriter(f,fieldnames=["title", "year"], delimiter=',') 
     writer.writerows(list_of_dicts) 

は、あなたの関数のパラメータとしてdictsのリストを渡して、一度にすべてのデータを書き込むためにwriterowsメソッドを使用します。

+0

ありがとう..私のエラーを理解しています!! –

関連する問題