2016-03-08 2 views
3

Я пытаюсь написать рамку данных Pandas в csv с '€' как разделитель.Ошибка записи pandas в csv с разделителем знака euro

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

однако, я получаю ошибку:

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

Как я могу решить эту проблему? я должен использовать знак евро в качестве разделителя

+0

€ это специальный символ, поэтому оно не один символ ... использовать другой разделитель, как - или вкладки ... просто не использовать специальный символ –

+0

К сожалению, я должен использовать знак евро – Menkes

+0

Использовать регулярное выражение для разделителя foe затем –

ответ

2

Время переключения на питон 3.

Это потому, что по умолчанию строка ASCII в Python 2. ASCII символов 1 байт (следовательно, их диапазон 0 до 127). Этого недостаточно для представления всех символов; в этом случае '€'. Для представления этих 3 байтов необходимо.

Следовательно, мир переключился на юникод. Который имеет более высокий диапазон. К счастью, 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')