日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python?全角半角互換的實現示例_python

作者:王大呀呀 ? 更新時間: 2022-06-01 編程語言

在自然語言處理過程中,全角、半角的的不一致會導致信息抽取不一致,因此需要統一。

有規律(不含空格):

全角字符unicode編碼從65281~65374 (十六進制 0xFF01 ~ 0xFF5E)
半角字符unicode編碼從33~126 (十六進制 0x21~ 0x7E)

特例:

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

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

注:

1. 中文文字永遠是全角,只有英文字母、數字鍵、符號鍵才有全角半角的概念,一個字母或數字占一個漢字的位置叫全角,占半個漢字的位置叫半角。

2. 引號在中英文、全半角情況下是不同的

示例

# 全角轉半角
def strQ2B(ustring):
    ss = []
    for s in ustring:
        rstring = ""
        for uchar in s:
            inside_code = ord(uchar)
            if inside_code == 12288:  
                inside_code = 32
            elif (inside_code >= 65281 and inside_code <= 65374):   
                inside_code -= 65248
            rstring += chr(inside_code)
        ss.append(rstring)
    return ''.join(ss)

# 半轉全角
def strB2Q(ustring):
    ss = []
    for s in ustring:
        rstring = ""
        for uchar in s:
            inside_code = ord(uchar)
            if inside_code == 32:
                inside_code = 12288
            elif (inside_code >= 33 and inside_code <= 126): 
                inside_code += 65248
            rstring += chr(inside_code)
        ss.append(rstring)
    return ''.join(ss)


if __name__ == '__main__':
    b = strQ2B('王大AA')
    print(b)
    a = strB2Q("王大AB")
    print(a)

庫函數說明

chr()函數用一個范圍在range(256)內的(就是0~255)整數作參數,返回一個對應的字符。
unichr()跟它一樣,只不過返回的是Unicode字符。

ord()函數是chr()函數(對于8位的ASCII字符串)或unichr()函數(對于Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的ASCII數值,或者Unicode數值。

原文鏈接:https://juejin.cn/post/7080335663979036686

欄目分類
最近更新