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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

python?全角半角互換的實(shí)現(xiàn)示例_python

作者:王大呀呀 ? 更新時(shí)間: 2022-06-01 編程語(yǔ)言

在自然語(yǔ)言處理過(guò)程中,全角、半角的的不一致會(huì)導(dǎo)致信息抽取不一致,因此需要統(tǒng)一。

有規(guī)律(不含空格):

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

特例:

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

除空格外,全角/半角按unicode編碼排序在順序上是對(duì)應(yīng)的(半角 + 0x7e= 全角),所以可以直接通過(guò)用+-法來(lái)處理非空格數(shù)據(jù),對(duì)空格單獨(dú)處理。

注:

1. 中文文字永遠(yuǎn)是全角,只有英文字母、數(shù)字鍵、符號(hào)鍵才有全角半角的概念,一個(gè)字母或數(shù)字占一個(gè)漢字的位置叫全角,占半個(gè)漢字的位置叫半角。

2. 引號(hào)在中英文、全半角情況下是不同的

示例

# 全角轉(zhuǎn)半角
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)

# 半轉(zhuǎn)全角
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)

庫(kù)函數(shù)說(shuō)明

chr()函數(shù)用一個(gè)范圍在range(256)內(nèi)的(就是0~255)整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的字符。
unichr()跟它一樣,只不過(guò)返回的是Unicode字符。

ord()函數(shù)是chr()函數(shù)(對(duì)于8位的ASCII字符串)或unichr()函數(shù)(對(duì)于Unicode對(duì)象)的配對(duì)函數(shù),它以一個(gè)字符(長(zhǎng)度為1的字符串)作為參數(shù),返回對(duì)應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值。

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

欄目分類
最近更新