飘逸的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'
明明肉眼看起来只需要加个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'
相关文章推荐
- 飘逸的python - 编码杂症之在字符串前面加u
- Python中文编码问题(字符串前面加'u')
- Python中文编码问题(字符串前面加'u')
- Python字符串的编码与解码(encode与decode)
- Python的数据类型 字符串和编码
- Python判断文件和字符串编码类型
- Windows下Python字符串编码问题
- python:字符串编码问题
- python中字符串前面加r的作用
- Python字符串编码
- python字符串前面加u,r,b的含义及字符串判空
- python学习笔记-字符串和编码
- 【转载】不得不知道的Python字符串编码相关的知识
- python 字符串前面添加u,r,b的含义
- Python 字符串前面加'r'
- python字符串前面加u,r,b的含义
- Python3中字符串的编码与解码以及编码之间转换(decode、encode)
- python字符串编码常见问题
- 学习Python6(临时计算器+字符串编码)
- python字符串编码及编码错误