python 全角半角互换的实现示例

作者:王大呀呀 时间:2021-02-03 20:30:52 

在自然语言处理过程中,全角、半角的的不一致会导致信息抽取不一致,因此需要统一。

有规律(不含空格):

全角字符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

标签:python,全角,半角
0
投稿

猜你喜欢

  • 关于Python常用模块时间模块time

    2022-06-19 14:12:08
  • Python中turtle库常用代码汇总

    2021-02-24 06:50:38
  • python中pygame针对游戏窗口的显示方法实例分析(附源码)

    2022-04-27 11:35:12
  • golang gorm的预加载及软删硬删的数据操作示例

    2024-04-25 13:18:34
  • 什么是JSON及JSON的结构

    2008-06-15 07:16:00
  • Python实现HTTP协议下的文件下载方法总结

    2023-04-29 20:01:36
  • 使用python实现knn算法

    2022-01-26 09:33:45
  • Python 数据类型中的字符串和数字

    2023-04-30 07:51:58
  • Python机器学习之决策树算法

    2022-06-07 06:38:43
  • MySQL skip-character-set-client-handshake导致的一个字符集问题

    2024-01-15 11:33:26
  • tensorflow 变长序列存储实例

    2023-08-28 01:05:40
  • Python多线程原理与用法实例剖析

    2023-07-22 13:40:37
  • 微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动

    2023-11-14 14:01:31
  • python基础之类型转换函数

    2021-06-25 02:43:27
  • Win10环境中如何实现python2和python3并存

    2023-10-18 02:58:34
  • js实现(层,表格)元素圆角的函数

    2008-01-01 16:40:00
  • Python命令行参数解析模块optparse使用实例

    2023-11-04 08:09:08
  • python调用并链接MATLAB脚本详解

    2021-12-11 07:16:42
  • 微信小程序实现图片上传功能实例(前端+PHP后端)

    2023-11-05 14:19:27
  • Python中pycharm编辑器界面风格修改方法

    2023-11-04 08:43:42
  • asp之家 网络编程 m.aspxhome.com