python中文字符串怎么定位啊,比如‘我爱中国’,,那么如果‘我爱中国’[2:3]不是“中国”两个字啊

Python018

python中文字符串怎么定位啊,比如‘我爱中国’,,那么如果‘我爱中国’[2:3]不是“中国”两个字啊,第1张

中文字符不同编码规则里所占用的长度是不同的,这个你可以去查询相应的编码规则,具体到python中,可以从以下的小例子中看出:

也就是说如果你使用的unicode编码在python中的长度为1,gbk编码在python中的长度为2。对于utf-8编码来书,字符长度是可变的(这个可以从上图的str4和str5看出),不同的字符所占用的字节数是不同的,例如数字和字母占用1个字节,汉字、日文、韩文等占用2个字节或以上,长度不定。

所以还需要具体情况具体分析,

具体到你的问题,根据python的切片规则,[2:3]仅仅取了第三个个字节,并不包括第三个,想要取两个的话可以用[2:4]。想要解决你的问题按照不同的编码对应即可

在python里,汉字分字节流和unicode字符串:

参考http://www.sqlite.com.cn/MySqlite/11/395.Html

例如“哈”字,假如两个有两个字符str1和str2

str1 = '\xb9\xfe'// 这个字节流表示哈字是使用GBK编码的字节流

str2 = u'\u54c8 // 表示这个字符使用UNICODE-16编码

判断相等:

str1.decode('GBK') == str2

统一转换成UNICODE16比较, 如果str2不是UNICODE16编码,也需要做相应的转换。