python - 如何正則字符串中的所有漢字
問(wèn)題描述
這樣算嗎?121238asdf<img src='https://imgsa.baidu.com/forum/w%3D580/sign=da0493cd90ef76c6d0d2fb23ad14fdf6/e483aa4bd11373f0bddb2e73a40f4bfbf9ed04b1.jpg' height='420'>
字符串如上,類型是’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的值為類似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. angular.js - webpack build后的angularjs路由跳轉(zhuǎn)問(wèn)題2. java - web項(xiàng)目中,用戶登陸信息存儲(chǔ)在session中好 還是cookie中好,取決于什么?3. 數(shù)組按鍵值封裝!4. 表格對(duì)其 只涉及到對(duì)其,沒(méi)有涉及到大小,長(zhǎng)寬還有背景色類的嗎5. 老師,怎么不講一次性添加多個(gè)數(shù)據(jù)6. mac mysql 5.7.9 編碼修改無(wú)效7. mysql - 大部分?jǐn)?shù)據(jù)沒(méi)有行溢出的text字段是否需要拆表8. mysql 新增用戶 主機(jī)名設(shè)定 失敗9. mysql - SQL分組排序、隨機(jī)問(wèn)題?10. Mysql取下一條記錄
