国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python正則匹配中文與編碼總結

2019-11-06 07:49:13
字體:
來源:轉載
供稿:網友

字符串的編碼亂碼問題由來已久,真的是令人頭疼。這不是在做正則匹配中文時候,編碼又一次成了攔路虎,在這兒記錄兩點。第一,字符串編碼。第二,正則匹配中文。

早期編碼都用ASCII編碼,用一個字節(jié)來處理編碼。如大寫A編碼為65,但處理中文時候,一個字節(jié)顯然不夠,至少兩哥字節(jié),還不能和ASCII沖突,,中國制定GB2312編碼,把中文編進去。 類似的,韓國,日本都出來格子標準,結果就是多語言 混合的文本中會出現(xiàn)亂碼。 因此,Unicode應運而生。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了。 因此,Unicode應運而生。Unicode把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了。 新的問題又出現(xiàn)了:如果統(tǒng)一成Unicode編碼,亂碼問題從此消失了。但是,如果你寫的文本基本上全部是英文的話,用Unicode編碼比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上就十分不劃算。

所以,本著節(jié)約的精神,又出現(xiàn)了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。UTF-8編碼把一個Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個字節(jié),常用的英文字母被編碼成1個字節(jié),漢字通常是3個字節(jié),只有很生僻的字符才會被編碼成4-6個字節(jié)。如果你要傳輸?shù)奈谋景罅坑⑽淖址?,用UTF-8編碼就能節(jié)省空間 Python添加對Unicode的支持,以Unicode表示的字符串用u’ABC’來表示。 字符串’xxx’雖然是ASCII編碼,但也可以看成是UTF-8編碼,而u’xxx’則只能是Unicode編碼。 把u’xxx’轉換為UTF-8編碼的’xxx’用encode(‘utf-8’)方法。

>>> u'ABC'.encode('utf-8')'ABC'>>> u'中文'.encode('utf-8')'/xe4/xb8/xad/xe6/x96/x87

反過來,把UTF-8編碼表示的字符串’xxx’轉換為Unicode字符串u’xxx’用decode(‘utf-8’)方法。

>>> 'abc'.decode('utf-8')u'abc'>>> '/xe4/xb8/xad/xe6/x96/x87'.decode('utf-8')u'/u4e2d/u6587'>>> 由于Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python# -*- coding: utf-8 -*-

第一行注釋是為了告訴linux/OS X系統(tǒng),這是一個Python可執(zhí)行程序,Windows系統(tǒng)會忽略這個注釋;

第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

關于Python正則表達式匹配中文,其實只要同意編碼就行,我電腦用的py2.7,所以字符串前加u,在正則表達式前也加u即可。

str=u"【心理箴言】現(xiàn)實是污濁的河流,要想接受污濁的河流而自身不被污染,我們必須成為大海。 ??=-=4845/.?'?"# pattern =re.compile(u'[/u4e00-/u9fa5]')pattern =re.compile(u"[/u4e00-/u9fa5]+")result=re.findall(pattern,str)# print result.group()for w in result: print w

這里寫圖片描述 更加詳細正則匹配內容,可以看看這篇博文

內容參考:廖雪峰大神的博文 知乎上的回答:Unicode和UTF-8有何區(qū)別?鏈接

補充:

今天偶然看見篇博文,對python2.7編碼錯誤與原理分析很到位。PYTHON-進階-編碼處理小結


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保德县| 洱源县| 肇源县| 永年县| 安阳市| 蚌埠市| 新乐市| 南华县| 沅陵县| 柳林县| 临朐县| 会同县| 加查县| 巢湖市| 巴南区| 菏泽市| 白水县| 额尔古纳市| 舒城县| 突泉县| 江陵县| 黑河市| 肃北| 平江县| 鸡西市| 乃东县| 长宁区| 凤凰县| 大丰市| 卓资县| 柳州市| 西吉县| 磐石市| 永宁县| 怀集县| 东辽县| 屯门区| 遵义县| 潮安县| 林口县| 汝城县|