python中字符串中文乱码_python中 截取中文 字符串乱码

python对于string的截取是 str[start,end]

但是中文字符却显示乱码,让人莫名奇妙的。这个坑琢磨了半天,解决办法是改为unicode格式。

unicode格式与str格式的转换关系参考

一 string类型的字符串拼接

先查看英文,可以看到他们截取是正确的。

756986-20171124163438578-1270065526.png

inter='hello world'

repr(inter)

list(inter)

inter[2:4]

当存在中文字符时,却不能正确解析了,

756986-20171124163504921-424313465.png

zw='静夜思abc d'

repr(zw)

list(zw)

zw[2:5]#截取字符串

zw[1:4]

查看一下控制台的编码格式,可以看到是utf-8编码。当然,str还可以用其他编码。

import charade

det=charade.detect(zw)

print det

{'confidence': 0.87625, 'encoding': 'utf-8'}

页面是用utf-8编码的。

解决方法,使用unicode进行编码。下面看看他们之间的区别

二 unicode类型的字符串拼接

当为英文时,区别不大

756986-20171124163534828-1957749773.png

en=u'hello'

repr(en)

list(en)

en[2:3]

中文夹杂英文时,能查看出,list是按字拆分的

756986-20171124163549187-998634609.png

zw=u'静夜思ab d'

repr(zw)

list(zw)

zw[2:3]

由此可以看出转换为unicode进行截取正确,但在跟其他字符进行拼接时,需要注意字符串类型问题,str+unicode会报错~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值