python實現全形半形的相互轉換

2021-12-29 19:41:32 字數 1695 閱讀 1675

轉換說明

全形半形轉換說明

全形字符unicode編碼從65281~65374 (十六進製制 0xff01 ~ 0xff5e)

半形字元unicode編碼從33~126 (十六進製制 0x21~ 0x7e)

空格比較特殊,全形為 12288(0x3000),半形為 32(0x20)

除空格外,全形/半形按unicode編碼排序在順序上是對應的(半形 + 0x7e= 全形),所以可以直接通過用+-法來處理非空格資料,對空格單獨處理。  

參考**

複製**

# -*- coding: cp936 -*-

def strq2b(ustring):

"""把字串全形轉半形"""

rstring = ""

for uchar in ustring:

inside_code=ord(uchar)

if inside_code >= 0x0021 and inside_code <= 0x7e:   #全形直接返回

rstring += uchar

else:

if inside_code==0x3000:                         #全形角空格單獨處理 

inside_code = 0x0020

else:                                           #其他的全形半形的公式為:半形 = 全形- 0xfee0

inside_code -= 0xfee0

rstring += chr(inside_code)          

return rstring

def strb2q(ustring):

"""把字串半形轉全形"""

rstring = ""

for uchar in ustring:

inside_code=ord(uchar)

if inside_code  0x7e:   #全形直接返回

rstring += uchar

else:

if inside_code==0x0020:                         #半形空格單獨處理 

inside_code = 0x3000

else:                                           #其他的全形半形的公式為:全形 = 半形+0xfee0

inside_code += 0xfee0

rstring += unichr(inside_code)           

return rstring  

###測試

b = strb2q("mn123abc".decode('cp936'))                           

print b

c = strq2b("mn123abc".decode('cp936'))

print c  

庫函式說明

chr()函式用乙個範圍在range(256)內的(就是0~255)整數作引數,返回乙個對應的字元。

unichr()跟它一樣,只不過返回的是unicode字元。

ord()函式是chr()函式(對於8位的ascii字串)或unichr()函式(對於unicode物件)的配對函式,它以乙個字元(長度為1的字串)作為引數,返回對應的ascii數值,或者unicode數值。

python實現全形半形的相互轉換

緣起 在自然語言處理過程中,全形 半形的的不一致會導致資訊抽取不一致,因此需要統一。轉換說明 全形半形轉換說明 有規律 不含空格 全形字符unicode編碼從65281 65374 十六進製制 0xff01 0xff5e 半形字元unicode編碼從33 126 十六進製制 0x21 0x7e 特例...

半形全形相互轉換

全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 code 全形空格為12288,半形空格為32 其他字元半形 33 126 與全形 65281 65374 的對應關係是 均相差65248 半形轉換為全形函式 funct...

全形轉半形 半形轉全形(Python)

coding utf 8 def str q2b u string 全形轉半形 全形字符unicode編碼從65281 65374 十六進製制 0xff01 0xff5e 半形字元unicode編碼從33 126 十六進製制 0x21 0x7e 空格比較特殊,全形為 12288 0x3000 半形為...