我有以下列表:
adrList = {0: ['Belgium'], 1: ["Fontaine l'Ev\\xc3\\xaaque"]}
print adrList
adrList可以正确打印:
{0: ['Belgium'], 1: ["Fontaine l'Ev\\xc3\\xaaque"]}
但是,当我从位置1检索编码的值时
city = adrList[1][0]
print city
我得到以下结果:
Fontaine L'ev\xe3\xaaque
如您所见,两个双反斜杠更改为常规反斜杠,“ xc3”更改为“ xe3”,并且某些大写/小写字符更改。
检索该值后,编码已损坏,对其执行诸如json.dumps()之类的操作将崩溃。为什么会更改,以及如何在不更改的情况下按字面值检索值?
编辑:找到了我的问题的根源:string.capwords在我试图为其分配值的属性的设置器中的值上运行,这使编码混乱。
答案 0 :(得分:1)
Python 2.7.6,我没有看到类似的问题:
>>> adrList = {0: ['Belgium'], 1: ["Fontaine l'Ev\\xc3\\xaaque"]}
>>> print adrList
{0: ['Belgium'], 1: ["Fontaine l'Ev\\xc3\\xaaque"]}
>>> city = adrList[1][0]
>>> print city
Fontaine l'Ev\xc3\xaaque
双反斜杠已经消失了(您对print
的期望是什么),但是其他一切都保持不变,没有xc3
变成xe3
或其他任何东西。
此外,我认为您实际上不需要双斜杠,它可以更正确地工作:
>>> adrList = {0: ['Belgium'], 1: ["Fontaine l'Ev\xc3\xaaque"]}
>>> print adrList
{0: ['Belgium'], 1: ["Fontaine l'Ev\xc3\xaaque"]}
>>> city = adrList[1][0]
>>> print city
Fontaine l'Evêque
>>>
答案 1 :(得分:0)
找到了错误的根源:string.capwords正在我试图分配该值的属性的设置器上运行,这使编码混乱。这就解释了与我最初发布的示例代码的区别。