python中 截取中文 字符串亂碼


python對於string的截取是 str[start,end]
但是中文字符卻顯示亂碼,讓人莫名奇妙的。這個坑琢磨了半天,解決辦法是改為unicode格式。
unicode格式與str格式的轉換關系參考
 
 

一 string類型的字符串拼接

先查看英文,可以看到他們截取是正確的。
 
 
inter='hello world'
repr(inter)
list(inter)
inter[2:4]
 
 
當存在中文字符時,卻不能正確解析了,
 
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類型的字符串拼接

當為英文時,區別不大
 
 
en=u'hello'
repr(en)
list(en)
en[2:3]
 
中文夾雜英文時,能查看出,list是按字拆分的
 
 
zw=u'靜夜思ab d'
repr(zw)
list(zw)
zw[2:3]
 
由此可以看出轉換為unicode進行截取正確,但在跟其他字符進行拼接時,需要注意字符串類型問題,str+unicode會報錯~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM