#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 как можно позже на выходе.
Для обеспечения соблюдения этого соглашения все строки в Python 3 являются юникодом. Python 2, к сожалению, позволяет использовать байтовые строки как для текста, так и для данных со всей путаницей, которую это вызывает.
Ответ №2:
Какая разница для вашего приложения, если у вас есть строка Unicode? Если вам не нужен префикс u, вы можете использовать Python3, где строки по умолчанию являются unicode.