2016-10-03 73 views
3

我想在python中創建一個歐洲格式的csv。我已經設定的分隔符分號如何使用逗號作爲小數點分隔符來編寫csv?

writer = csv.writer(response, delimiter=';', quoting=csv.QUOTE_ALL) 

然而,這仍然使用點.作爲小數點分隔符。使用逗號的正確方法是什麼?對我的語言環境正確嗎? 我似乎無法找到任何方法將其設置在文檔中。 (我用的,並希望堅持,內置csv模塊)

編輯: 這讓標記爲重複,但鏈接的問題涉及讀,不寫。我找不到有關寫作的答案。這些主題(略微但重要)不同。

+0

關於數據源中的小數點分隔符是什麼? –

+0

在此鏈接中有一些關於此的討論 - 它可能是有用的:http://stackoverflow.com/questions/7751157/python-csv-list-separator-based-on-regional-settings – emmalg

+0

@AliSAIDOMAR什麼?我有一些python浮點數,所以它們並沒有真正的小數點分隔符,它們是數字。但我不認爲我理解你的問題。 – maniexx

回答

3

一點點哈克的方式,但它是我能想到的最好的:轉換浮字符串和替換.,

def localize_floats(row): 
    return [ 
     str(el).replace('.', ',') if isinstance(el, float) else el 
     for el in row 
    ] 

for row in rows: 
    writer.writerow(localize_floats(row)) 

如果你想更好的本地化處理,我建議你到所有的數字轉換使用babel.numbers包。

+0

它們不會被編碼爲csv中的字符串嗎? IE引用並將其解釋爲其他軟件的字符串? – maniexx

+0

當您將';'設置爲分隔符時,它們不會被引用。 – skovorodkin

+0

我不知道其他軟件如何處理這種格式。國際海事組織(IMO)更容易輸出數字,然後在您真正需要時將其本地化(例如在用戶界面中)。 – skovorodkin

相關問題