2017-02-06 15 views
0

Я пытаюсь писать символы с двойными точками (умляуты), такими как ä, ö и Ö. Я могу записать его в файл с data.encode("utf-8"), но результат b'\xc3\xa4\xc3\xa4\xc3\x96' не очень приятный (UTF-8 как буквенные символы). Я хочу получить "ääÖ" как записанный в файл.Запись CSV-файла с помощью umlauts, вызывающего «UnicodeEncodeError:« ascii »кодек не может кодировать символ«

Как написать данные с символами умляут в CSV-файл в Python 3?

import csv 
data="ääÖ" 
with open("test.csv", "w") as fp: 
    a = csv.writer(fp, delimiter=";") 
    data=resultFile 
    a.writerows(data) 

Traceback:

File "<ipython-input-280-73b1f615929e>", line 5, in <module> 
    a.writerows(data) 
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 15: ordinal not in range(128) 
+2

Помогло ли это открыть файл с 'encoding = 'utf-8''? – languitar

+0

попробуйте добавить: '#!/Usr/bin/env python # - * - кодирование: utf-8 - * -' см. Этот [ответ] (http://stackoverflow.com/questions/6289474/working-with -utf-8-encoding-in-python-source) –

+0

@ languitar нет, это не так. – hhh

ответ

1

Добавить параметр encoding в open() и установить его на 'utf8'.

import csv 

data = "ääÖ" 
with open("test.csv", 'w', encoding='utf8') as fp: 
    a = csv.writer(fp, delimiter=";") 
    a.writerows(data) 

Edit: Убрано использование io библиотеки, как open такой же, как io.open в Python 3.

+0

Вы можете установить кодировку в 'open' слишком – Arman

+1

В Python 3,' open' и 'io.open' - это то же самое. Только в Python 2 они отличаются (где 'io.open' ведет себя как Python 3' open'). – ShadowRanger

+0

Это решение работает с python3 на моем OSX, но дает ошибку с python2.7. Ошибка находится в строке, когда данные установлены так перед открытием вызова и спецификацией кодировки. –

-1

Это решение должно работать как на python2 и 3 (не требуется в Python3):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import csv 
data="ääÖ" 
with open("test.csv", "w") as fp: 
    a = csv.writer(fp, delimiter=";") 
    a.writerows(data) 

Кредиты на: Working with utf-8 encoding in Python source

 Смежные вопросы

  • Нет связанных вопросов^_^