Обрабатывать французские символы в списке строк - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь извлечь данные из файла CSV, написанного на французском языке с Python 2.7.Я могу правильно прочитать одну ячейку (символы отображаются так, как они должны отображаться при их печати).Однако при печати списка строк (всего содержимого файла) выходные данные зашифровываются.

Пример:

# -*- coding: utf-8 -*-
from __future__ import print_function#, unicode_literals

l = ["à ä â",     #Some french characters
     "é è ë ê",
     "ï î",
     "ù ü û",
     "ö ô",
     "ç",
     "°"]

for i, item in enumerate(l):
    print(l[i])

print(l)

Печать строк отдельно (цикл for)выводит:

à ä â
é è ë ê
ï î
ù ü û
ö ô
ç
°

При печати всего списка (print(l)) выводит:

['\xc3\xa0 \xc3\xa4 \xc3\xa2', '\xc3\xa9 \xc3\xa8 \xc3\xab \xc3\xaa', '\xc3\xaf \xc3\xae', '\xc3\xb9 \xc3\xbc \xc3\xbb', '\xc3\xb6 \xc3\xb4', '\xc3\xa7', '\xc2\xb0']

Это действительно меня смущает.Я прошу прощения, если я пропустил сообщение, которое уже отвечает на этот вопрос.

Что я пытался до сих пор:

l= [unicode(i, 'utf-8') for i in l]

, который также выводит:

[u'\xe0 \xe4 \xe2', u'\xe9 \xe8 \xeb \xea', u'\xef \xee', u'\xf9 \xfc \xfb', u'\xf6 \xf4', u'\xe7', u'\xb0']

РЕДАКТИРОВАТЬ:

Другая попытка была:

l=repr(l).decode('unicode-escape').encode('utf8')
print(l)

, которая выводит желаемый результат:

[u'à ä â', u'é è ë ê', u'ï î', u'ù ü û', u'ö ô', u'ç', u'°']

Однако,

print(l[0])

Выходы:

[

Итак, список теперь представляет собой строку.

Заранее благодарю за помощь и предложения.

1 Ответ

0 голосов
/ 26 октября 2018

Вы нашли эту особенность Python 2:

Печать Unicode Char внутри списка

Так же, как списки печатаются в Python 2. Нет ничего плохого в том, чтоданные или что вы делаете.

...