您的位置:首页 > 编程语言 > Python开发

飘逸的python - 编码杂症之在字符串前面加u

2013-08-08 21:00 232 查看
有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样。比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'。
明明肉眼看起来只需要加个u,但是怎么加呢?
>>s = '\u6253\u602a\u8005'
>>s
'\\u6253\\u602a\\u8005'
>>'u'+s
'u\\u6253\\u602a\\u8005'

这样不行。

而且表面看起来是'\u6253\u602a\u8005',其实内部是'\\u6253\\u602a\\u8005',就是转义了反斜杠,有2个斜杠,而我要的是\u而不是
\\u

这时喜欢用黑魔法的可能会想到eval。

>>eval('u"'+s+'"')

u'\u6253\u602a\u8005'

>>print eval('u"'+s+'"')

打怪者

嗯,没错,用eval可以。不过这样实现太蛋疼了。

python就自带了解决方法。就是
unicode-escape

>>unicode(s,'unicode-escape')

u'\u6253\u602a\u8005'

另外,还有个跟unicode-escape齐名的东西,叫
string-escape。它的作用可以说是“去掉转义,把2个反斜杠变成1个”。看例子。

>>s = 'hello\\nworld'

>>s

'hello\\nworld'

>>s.decode('string-escape')

'hello\nworld'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: