Python: 用"\xf3" (ó)得到了unicode。如何转换为str ó?
我在使用一个API,返回的内容里有一个unicode字符,显示为\xf3。我想把它转换成字符串,但遇到了错误。顺便说一下,我用的是Python 2.7。
编辑:
为了更清楚一点:假设我有一个字典,里面的键有一些字符串包含'ó'这个字符。
a = {'camión': 3}
我想检查一个unicode对象"\xf3"是否是这个字典的一个键。比如,我尝试这样做:
u"cami\xf3n" in a
结果是False。如果我尝试打印这个unicode对象,我能看到"camión",但我不能简单地转换成字符串(会出错)。
所以,我想知道怎么把u"cami\xf3n"(unicode)转换成"camión"(字符串),并且能在之前的条件下通过检查。
1 个回答
4
你在用什么编码呢?在处理字符串和Unicode时,没有“转换”这个说法,你需要做的是编码(把Unicode转换成字符串)或者解码(把字符串转换成Unicode),这要用到特定的编码方式(提示:一般使用utf-8是最安全的选择)。
一旦你知道自己在用什么编码,你就可以根据需要进行解码或编码,比如:
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> bytekey = "éà" # using my default system encoding => utf-8
>>> a = {bytekey: 42}
>>> a
{'\xc3\xa9\xc3\xa0': 42}
>>> bytekey in a
True
>>> ukey = u"éà"
>>> ukey
u'\xe9\xe0'
>>> ukey in a
False
>>> ukey.encode("utf-8")
'\xc3\xa9\xc3\xa0'
>>> ukey.encode("utf-8") in a
True
>>>