список.добавить (что-то) unicode — ascii

#python

#python

Вопрос:

код

  a = "한글" #korean language
 a_list = []
 a_list.append({'key': a})
 print a_list
 

Результат

 [{'key': u'"ud55cuae00"'}]
 

Я не хочу конвертировать unicode.
Как я могу остаться на корейском языке
Я хочу напечатать так

  [{'key': '한글'}]
 

Комментарии:

1. Подождите, вы действительно спрашиваете, как вы можете сделать это неправильно?

2. В чем смысл dict здесь? Вы бы получили такое же преобразование, если бы у вас был только a_list = [a] , не так ли?

3. У вас есть два уровня кавычек вокруг ваших двух символов escape-последовательностей. Это не могло быть создано вашим опубликованным кодом. Пожалуйста, скопируйте / вставьте, не вводите из памяти.

Ответ №1:

Ваш код из вопроса выдает:

 [{'key': 'xedx95x9cxeaxb8x80'}]
 

Этот вывод отличается от того, что вы показали в вопросе.

Для создания: [{"key": "한글"}] вы могли бы использовать json :

 print json.dumps(a_list, ensure_ascii=False, encoding=your_source_code_encoding)
 

Полный пример

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
import json

a = "한글" # you should use u"" literals to work with Unicode strings
a_list = []
a_list.append({'key': a})

print json.dumps(a_list, ensure_ascii=False) # "utf-8" encoding is default
 

Вывод

 [{"key": "한글"}]
 

Вы написали:

Я не хочу конвертировать unicode. Как я могу остаться на корейском языке

Прочитайте абсолютный минимум, который каждый разработчик программного обеспечения абсолютно, положительно должен знать о Unicode и наборах символов (никаких оправданий!).

Основной вывод заключается в том, что если вы работаете с текстом, вы должны указать его кодировку.

Самый удобный и надежный способ — использовать строки Unicode во всей вашей программе, т.Е. декодировать байты, которые вы читаете, в строки Unicode как можно раньше при вводе и кодировать в байты при записи строк Unicode как можно позже на выходе.

Для обеспечения соблюдения этого соглашения все строки в Python 3 являются юникодом. Python 2, к сожалению, позволяет использовать байтовые строки как для текста, так и для данных со всей путаницей, которую это вызывает.

Ответ №2:

Какая разница для вашего приложения, если у вас есть строка Unicode? Если вам не нужен префикс u, вы можете использовать Python3, где строки по умолчанию являются unicode.