python3环境下的全角与半角转换代码和测试
生活随笔
收集整理的這篇文章主要介紹了
python3环境下的全角与半角转换代码和测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ?全角和半角轉換是文本預處理的常見工作之一,然而現在網上一搜python的相關代碼,幾乎都是python2版本的,因此根據人角和半角的轉換規律,將其代碼撰寫如下:
1、全角與半角之間的轉換規律
角字符unicode編碼從65281~65374 (十六進制 0xFF01 ~ 0xFF5E)
半角字符unicode編碼從33~126 (十六進制 0x21~ 0x7E)
-
特殊的:
空格比較特殊,全角為 12288(0x3000),半角為 32(0x20)
除空格外,全角/半角按unicode編碼排序在順序上是對應的(半角 + 0x7e= 全角),所以可以直接通過用+-法來處理非空格數據,對空格單獨處理。
?
2、轉換代碼腳本(python3)
def strQ2B(ustring):"""把字符串全角轉半角"""ss = []for s in ustring:rstring = ""for uchar in s:inside_code = ord(uchar)if inside_code == 12288: # 全角空格直接轉換inside_code = 32elif (inside_code >= 65281 and inside_code <= 65374): # 全角字符(除空格)根據關系轉化inside_code -= 65248rstring += 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 = 12288elif (inside_code >= 33 and inside_code <= 126): # 全角字符(除空格)根據關系轉化inside_code += 65248rstring += chr(inside_code)ss.append(rstring)return ''.join(ss)if __name__ == '__main__':a = strB2Q("你好pythonabdalduizxcvbnm")print(a)b = strQ2B(a)print(b)測試:得到的結果如下所示:
你好pythonabdalduizxcvbnm
你好pythonabdalduizxcvbnm
總結
以上是生活随笔為你收集整理的python3环境下的全角与半角转换代码和测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 栅格法建立环境地图及MATLAB实现
- 下一篇: win10内存占用率过高怎么办_win1