python2.7中文编码_python2.7

我从外部API中获得了一个字符串:

"\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def"

被传给了变量a,以utf8字节串,所以:

a

'\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1,\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'

print a

\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def

这就是已经成了这样的现实状态。

我要把a变成unicode字符要怎么做?

# 把a变成:

u'\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1,\u884c\u9a76170\u7c73,\u76f4\u884c\u8fdb\u5165\u4e2d\u5173\u6751\u4e1c\u8def'

无视

a

里的那些转义

\

么?那

u'' + a

就好了……

import re

str='\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'

pat=re.compile('\\\\u((\d|[a-f]){4})')

def change_str(u_str):

return unichr(int(u_str.group(1),16))

tmp=pat.sub(change_str,str)

print(tmp)

弄了老半天只有这样了。。。不知道有没更好的。。

楼下的str.decode(‘unicode-escape’)直接可以

str='\\u4ece\\u8d77\\u70b9\\u5411\\u6b63\\u5357\\u65b9\\u5411\\u51fa\\u53d1\\u884c\\u9a76170\\u7c73,\\u76f4\\u884c\\u8fdb\\u5165\\u4e2d\\u5173\\u6751\\u4e1c\\u8def'

print(str.decode('unicode-escape'))

出现这个问题的主要原因是python吧Unicode编码当成了普

通的字符串,因此把原来的斜杠又加了一个斜杠进行转义

个人认为比较简单的解决方法是用 decode(‘unicode-escape’)

str = “\u4ece\u8d77\u70b9\u5411\u6b63\u5357\u65b9\u5411\u51fa\u53d1”

uni_str = str.decode(‘unicode-escape’)

print uni_str

简单粗暴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值