python - 如何正則字符串中的所有漢字
問(wèn)題描述
這樣算嗎?121238asdf<img src='https://imgsa.baidu.com/forum/w%3D580/sign=da0493cd90ef76c6d0d2fb23ad14fdf6/e483aa4bd11373f0bddb2e73a40f4bfbf9ed04b1.jpg' height='420'>
字符串如上,類(lèi)型是’str’,要正則獲得漢字。我之前使用[u4e00-u9fa5]結(jié)果獲得的還是英文,符號(hào)跟數(shù)字的list。求教導(dǎo)正確姿勢(shì)。另外說(shuō)說(shuō)我哪里寫(xiě)錯(cuò)了..
pattern = re.compile(r’[u4E00-u9FA5]’)print pattern.findall(x[1])
這是我寫(xiě)的...但是返回結(jié)果就沒(méi)有漢字,反而是除漢字外的其他字符。
問(wèn)題解答
回答1:我這里假設(shè)你需要匹配的文本為s:
pattern = re.compile(ur'[u4e00-u9fa5]')print pattern.findall(s.decode(’utf8’))
這里的decode(’utf8’)是怕s的值為類(lèi)似x66x77x88這樣的Unicode散列。另外,需要注意compile()中ur修飾符,u為Unicode修飾符。
PS:我是從這篇文章得到的啟發(fā)。
Update剛才看了下樓下說(shuō)的,確實(shí)用Python 3就不存在輸出為Unicode散列的情況了,以下摘自此處
Unicode 字符串在Python2中,普通字符串是以8位ASCII碼進(jìn)行存儲(chǔ)的,而Unicode字符串則存儲(chǔ)為16位unicode字符串,這樣能夠表示更多的字符集。使用的語(yǔ)法是在字符串前面加上前綴 u。
在Python3中,所有的字符串都是Unicode字符串。
回答2:你用的是python2,uxxxx是unicode字符,匹配后得到的是字節(jié)串,print出來(lái)是各個(gè)字節(jié)值。
換python3 就沒(méi)這個(gè)問(wèn)題了
相關(guān)文章:
1. 關(guān)于docker下的nginx壓力測(cè)試2. mac里的docker如何命令行開(kāi)啟呢?3. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?4. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””5. docker容器呢SSH為什么連不通呢?6. nignx - docker內(nèi)nginx 80端口被占用7. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題8. javascript - 最近用echarts做統(tǒng)計(jì)圖時(shí)遇到兩個(gè)問(wèn)題!!9. docker gitlab 如何git clone?10. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問(wèn)題。

網(wǎng)公網(wǎng)安備