Кириллы c кодировка python 2,7 массив - PullRequest
0 голосов
/ 31 января 2020

Пока мой код:

data = [(u'Rest', u'русский', u'фввв', u'vc'), (u'Rest', u'русский', u'фввв ', u'vc')]
print(data)

результат:

[(u'Rest', u'\u0440\u0443\u0441\u0441\u043a\u0438\u0439', u'\u0444\u0432\u0432\u0432', u'vc'), (u'Rest', u'\u0440\u0443\u0441\u0441\u043a\u0438\u0439', u'\u0444\u0432\u0432\u0432 ', u'vc')]

Я хочу, чтобы на выходе отображались символы c кириллицы, например:

[('Rest', 'русский', 'фввв', 'vc'), ('Rest', 'русский', 'фввв ', 'vc')]

1 Ответ

1 голос
/ 31 января 2020

Это происходит потому, что когда мы распечатываем список или кортеж, представление элементов в списке определяется функцией __repr__ элемента, а не его функцией __str__. Чтобы исправить это, вы можете использовать следующее для кодирования строк, а затем декодировать repr() списка.

Код:

# -*- coding: utf-8 -*-
import sys
data = [(u'Rest', u'русский', u'фввв', u'vc'), (u'Rest', u'русский', u'фввв ', u'vc')]
print repr([tuple(x.encode(sys.stdout.encoding) for x in sl) for sl in data]).decode('string-escape')

Out:

[('Rest', 'русский', 'фввв', 'vc'), ('Rest', 'русский', 'фввв ', 'vc')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...