list.append(something)unicode - ascii

时间:2011-10-31 03:00:06

标签: python

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

结果

[{'key': u'"\ud55c\uae00"'}]

我不想转换unicode。 我怎么能留在韩语 我希望像这样打印

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

2 个答案:

答案 0 :(得分:4)

来自问题的代码产生:

[{'key': '\xed\x95\x9c\xea\xb8\x80'}]

此输出与您在问题中显示的内容不同。

要制作:[{"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。我怎么能留在韩语

阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

主要的内容是,如果您正在使用文本,则必须指定其编码。

最方便可靠的方法是在整个程序中使用Unicode字符串,即在输入时尽可能早地解码您读取到Unicode字符串的字节,并在输出时尽可能晚地编写Unicode字符串,然后编码为字节。

为了强制执行该约定,所有字符串都是Python 3中的Unicode。遗憾的是,Python 2允许您对文本和数据使用字节串,而且会引起混乱。

答案 1 :(得分:1)

如果您有unicode字符串,它会对您的应用程序产生什么影响?如果你不想要u前缀,你可以使用Python3,默认情况下字符串是unicode。