2016-03-08 112 views
3

我試圖用'€'作爲分隔符將一個熊貓數據幀寫入一個csv。將熊貓寫入CSV與歐元符號分隔符的錯誤

data.to_csv(file_path, sep = '€') 

但是,我得到的錯誤:

TypeError: "delimiter" must be an 1-character string 

我怎樣才能解決這個問題? 我必須使用歐元符號作爲分隔符

+0

€是一個特殊字符,以便它不單個字符...使用另一個分隔符一樣 - 或者標籤......只是不使用特殊字符 –

+0

不幸的是我必須使用歐元符號 – Menkes

+0

使用正則表達式定界符然後 –

回答

2

時間切換到蟒3.

這是因爲通過默認字符串爲ASCII在python 2. ASCII字符1個字節(因此其範圍爲0到127)。這不足以表示所有字符;在這種情況下'€'。代表這3個字節是必需的。

因此世界切換到unicode。其中有更高的範圍。幸運的是,python3的所有字符串都使用unicode。
在python3 data.to_csv(file_path, sep = '€')將正常工作。

0

您可以使用僅使用一個字節編碼「€」,像ISO8859-15或CP1252編碼:

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]]) 
sep = u'€'.encode('iso8859-15') 
result = df.to_csv(sep=sep) 
print result.decode('iso8859-15') 

€0€1€2 
0€1€2€3 
1€4€5€6 

請注意,這不會在Python 3工作,其中sep必須是unicode字符串。

0

我在Python3中遇到了同樣的問題。

此代碼的工作對我來說:

df = pd.read_csv('', sep='‰', engine='python', encoding='utf-8')