2013-07-08 2 views
1
# -*- coding: utf-8 -*- 
a='Привет' 
print a 
b=[] 
b.append(a) 
print b 

Вот код, который должен печатать ПриветРоссии в списках в питона 2,7

['Привет'] 

Но когда я запускаю этот код, он печатает Привет

['\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'] 

К сожалению, это не напечатайте, что мне нужно. Любое предложение, как это сделать?

+0

Читайте об этом -> http://docs.python.org/2/howto/unicode.html –

ответ

7

Поведение, которое вы видите, это нормальный. У вас есть кодированная строка в кодировке UTF-8, и при печати списка Python всегда будет показывать такие строки, как строковые литералы Python, в своей самой переносимой форме.

Вы действительно хотите использовать значение Unicode, и распечатывать отдельные элементы из списка:

# -*- coding: utf-8 -*- 
a = u'Привет' # Unicode literal 
print a 
b = [] 
b.append(a) 
print b[0]  # print individual item 

Если вы еще не знаете разницы между Unicode и строкой байт или что-нибудь много о кодеках, я убеждаю вы читать:

, прежде чем продолжить.

2

При печати списков Python будет использовать функцию repr на элементах внутри нее.

Функция repr для строк в Python 2.x сделает ее 100% совместимой с ascii, чтобы избежать проблем, таких как неправильное кодирование в вашем терминале.

Вам необходимо выполнить итерирование списка и распечатать каждый элемент.

Кроме того, я рекомендую использовать строки для текста (еще более важно, если это не ascii).

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