最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于python的漢字轉(zhuǎn)GBK碼實現(xiàn)代碼

 更新時間:2012年02月19日 20:24:47   作者:  
今天想用python調(diào)用百度框計算的搜過結(jié)果,看到了URL里面的漢字用GBK編碼,雖然可以直接在URL里面加入中文,之前也做過一個簡體字轉(zhuǎn)GBK碼的python函數(shù),但還是略嫌麻煩,今天改了一下

如圖,“廣”的編碼為%B9%E3,暫且把%B9稱為節(jié)編碼,%E3為字符編碼(第二編碼)。

思路:
從GBK編碼頁面收集漢字 http://ff.163.com/newflyff/gbk-list/
從實用角度下手,只選取“● GBK/2: GB2312 漢字”這一節(jié),共3755個漢字。
看規(guī)律:小節(jié)編碼從B0-D7,而針對漢字的編碼從A1-FE,即16*6-2=94,非常有規(guī)律性。
第一步:把常用的漢字用python提取出來,按順序存到一個字典文件里面,漢字用空格分隔。
第二步:根據(jù)編碼從A1-FE,每節(jié)94個漢字的規(guī)律,先定位節(jié)編碼,利用漢字在某一節(jié)的位置定位字符編碼

實施:
第一步:提取漢字
復(fù)制代碼 代碼如下:

with open('E:/GBK.txt') as f:
s=f.read().splitlines().split()

分割得到的list里面有重復(fù)的節(jié)編碼,要去掉B0/B1……類似的符號和中文的0-9/A-F字符
把獲取到的字符解碼看:


刪除掉這些字符:
先把分割得到的list全部解碼,然后

復(fù)制代碼 代碼如下:

gbk.remove(u'\uff10')

這里刪除字符的時候,用range生成一系列字符串,然后用notepad++處理了一下,并沒有找到簡單的辦法
復(fù)制代碼 代碼如下:

for t in [u'\uff10',u'\uff11',u'\uff12',u'\uff13',u'\uff14',u'\uff15',u'\uff16',u'\uff17',u'\uff18',u'\uff19',u'\uff21',u'\uff22',u'\uff23',u'\uff24',u'\uff25',u'\uff26']:
gbk.remove(t)

然后去除B0-D7這樣的小節(jié)編碼,同時提取字符編碼的時候也要用到類似的A1-FE這樣的編碼,于是就想生成這樣一個list,方便做刪除和索引操作。

生成編碼系列:
行編碼為0-9 A-F,列編碼為A-F
從A1開始遞增,遇到邊界(A9-AA)要手動處理,用到了ord()和chr()函數(shù),在ASCII編碼和數(shù)字之間轉(zhuǎn)換。
復(fù)制代碼 代碼如下:

t=['A1']
while True:
if t[-1]=='FE':
break
if (ord(t[-1][1])>=48 and ord(t[-1][1])<57) or (ord(t[-1][1])>=65 and ord(t[-1][1])<70):
t.append(t[-1][0]+chr(ord(t[-1][1])+1))
continue
if ord(t[-1][1])>=57 and ord(t[-1][1])<65:
t.append(t[-1][0]+chr(65))
continue
if ord(t[-1][1])>=70:
t.append(chr(ord(t[-1][0])+1)+chr(48))
continue

得到的列表:

有了這個編碼序列后,就可以從gbk庫中刪除B0-D7字符了。
最后檢查到還有空格未刪除,空格的unicode碼是\u3000
gbk.remove(u'\u3000')
最后encode成UTF-8編碼保存到字典文件。


我把這個字典文件放到網(wǎng)盤上了,外鏈:http://dl.dbank.com/c0m9selr6h

第二步:索引漢字

索引就是個簡單算法,因為字典里面的漢子是按照原先順序存儲的,而且GBK編碼表2的3755個漢字嚴格遵守每節(jié)94個漢字的規(guī)律,那就來個簡單的除數(shù)取整+1來定位小節(jié)編碼,再用漢字索引-節(jié)索引*94得到漢字在這一小節(jié)中的索引,然后利用上面生成的A1-FE list和索引來定位第二編碼。
算法思路有了,編碼,然后調(diào)試
附上python代碼和注釋:

復(fù)制代碼 代碼如下:

def getGBKCode(gbkFile='E:/GBK1.1.txt',s=''):
#gbkFile字典文件 共3755個漢字
#s為要轉(zhuǎn)換的漢字,暫且為gb2312編碼,即從IDLE輸入的漢字編碼

#讀入字典
with open(gbkFile) as f:
gbk=f.read().split()

#生成A1-FE的索引編碼
t=['A1']
while True:
if t[-1]=='FE':
break
if (ord(t[-1][1])>=48 and ord(t[-1][1])<57) or (ord(t[-1][1])>=65 and ord(t[-1][1])<70):
t.append(t[-1][0]+chr(ord(t[-1][1])+1))
continue
if ord(t[-1][1])>=57 and ord(t[-1][1])<65:
t.append(t[-1][0]+chr(65))
continue
if ord(t[-1][1])>=70:
t.append(chr(ord(t[-1][0])+1)+chr(48))
continue
#依次索引每個漢字
l=list()
for st in s.decode('gb2312'):
st=st.encode('utf-8')
i=gbk.index(st)+1
#小節(jié)編碼從B0開始,獲取漢字的小節(jié)編碼
t1='%'+t[t.index('B0'):][i/94]
#漢字在節(jié)點中的索引號
i=i-(i/94)*94
t2='%'+t[i-1]
l.append(t1+t2)
#最后用空格分隔輸出
return ' '.join(l)


得承認我的python代碼不是那么工整
附上我的微博ID:小欒Cooper

相關(guān)文章

  • django3.02模板中的超鏈接配置實例代碼

    django3.02模板中的超鏈接配置實例代碼

    在本篇文章里小編給大家整理了關(guān)于django3.02模板中的超鏈接配置實例代碼內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • Python訪問MySQL封裝的常用類實例

    Python訪問MySQL封裝的常用類實例

    這篇文章主要介紹了Python訪問MySQL封裝的常用類,實例詳述了針對MySQL使用query執(zhí)行select及使用update進行insert、delete等操作的方法,需要的朋友可以參考下
    2014-11-11
  • Python 爬蟲圖片簡單實現(xiàn)

    Python 爬蟲圖片簡單實現(xiàn)

    這篇文章主要介紹了Python 爬蟲圖片簡單實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    本文詳細介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下
    2024-09-09
  • 打包python 加icon 去掉cmd黑窗口方法

    打包python 加icon 去掉cmd黑窗口方法

    今天小編就為大家分享一篇打包python 加icon 去掉cmd黑窗口方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python?多態(tài)?協(xié)議?鴨子類型詳解

    python?多態(tài)?協(xié)議?鴨子類型詳解

    這篇文章主要為大家介紹了python?多態(tài)?協(xié)議?鴨子類型,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • python實現(xiàn)圖像降噪

    python實現(xiàn)圖像降噪

    這篇文章主要為大家詳細介紹了python實現(xiàn)圖像降噪,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Pytorch中的VGG實現(xiàn)修改最后一層FC

    Pytorch中的VGG實現(xiàn)修改最后一層FC

    今天小編就為大家分享一篇Pytorch中的VGG實現(xiàn)修改最后一層FC,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 一文帶你了解Python中Scikit-learn庫的使用

    一文帶你了解Python中Scikit-learn庫的使用

    Scikit-learn是Python的一個開源機器學(xué)習(xí)庫,它支持監(jiān)督和無監(jiān)督學(xué)習(xí),本文主要來深入探討一下Scikit-learn的更高級的特性,感興趣的小伙伴可以了解下
    2023-07-07
  • python中如何用time方法生成當(dāng)前時間年月日時分秒

    python中如何用time方法生成當(dāng)前時間年月日時分秒

    這篇文章主要給大家介紹了關(guān)于python中如何用time方法生成當(dāng)前時間年月日時分秒的相關(guān)資料,在Python中與時間處理有關(guān)的模塊就包括:time,datetime以及calendar,Time模塊用以取得系統(tǒng)時間相關(guān)的信息和時間的格式化等操作,需要的朋友可以參考下
    2023-08-08

最新評論

福安市| 全南县| 营口市| 天祝| 旺苍县| 凤山县| 阿瓦提县| 滦南县| 英吉沙县| 监利县| 印江| 九寨沟县| 四川省| 河间市| 麻城市| 临漳县| 马龙县| 同江市| 宜昌市| 来安县| 台北市| 克东县| 上林县| 会泽县| 秭归县| 视频| 慈溪市| 铜川市| 安徽省| 绩溪县| 永川市| 化州市| 邓州市| 嘉善县| 赤壁市| 三穗县| 井冈山市| 云和县| 屯昌县| 崇文区| 星子县|