全角与半角转换在处理汉语语料中会经常出现,这里分别说明汉字、数字、字母的unicode编码范围。以及全角与半角的转换方法。最后给出wiki上全角和半角的编码对照表。这里Python需要用Python3版本。

1、判断

1.1汉字的判断

汉字的unicode编码范围 u4e00 到 u9fa5。

def is_chinese(uchar):"""判断一个unicode是否是汉字"""if uchar >= u'\u4e00' and uchar<=u'\u9fa5':return Trueelse:return False

1.2数字0-9的判断

数字的unicode编码范围根据全角和半角,有两个不同区域,半角数字 u0030 到 u0039,全角数字 uff10 到 uff19。

def is_number(uchar):"""判断一个unicode是否是半角数字"""if uchar >= u'\u0030' and uchar<=u'\u0039':return Trueelse:return Falsedef is_Qnumber(uchar):"""判断一个unicode是否是全角数字"""if uchar >= u'\uff10' and uchar <= u'\uff19':return Trueelse:return False

1.3大小写字母判断

字母的unicode编码根据字母大小写,以及全角和半角共有四个区域。
半角大写字母:u0041 - u005a ,半角小写字母:u0061 - u007a ;
全角大写字母:uff21 - uff3a , 全角小写字母:uff41 - uff5a 。

def is_alphabet(uchar):"""判断一个unicode是否是半角英文字母"""if (uchar >= u'\u0041' and uchar <= u'\u005a') or (uchar >= u'\u0061' and uchar <= u'\u007a'):return Trueelse:return Falsedef is_Qalphabet(uchar):"""判断一个unicode是否是全角英文字母"""if (uchar >= u'\uff21' and uchar <= u'\uff3a') or (uchar >= u'\uff41' and uchar <= u'\uff5a'):return Trueelse:return False

1.4非汉字和数字字母的判断

判断除汉字、数字0-9、字母之外的字符。

def is_other(uchar):"""判断是否非汉字,数字和英文字符"""if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):return Trueelse:return False

2.全角和半角的转换

全角半角转换需要用到上面的数字、字母等判断。

2.1所有半角转全角,不是半角范围直接返回,空格半角特殊单独处理,其它半角和全角对应公式:半角 = 全角 - 0xfee0

def B2Q(uchar):"""单个字符 半角转全角"""inside_code = ord(uchar)if inside_code < 0x0020 or inside_code > 0x7e: # 不是半角字符就返回原来的字符return uchar if inside_code == 0x0020: # 除了空格其他的全角半角的公式为: 半角 = 全角 - 0xfee0inside_code = 0x3000else:inside_code += 0xfee0return chr(inside_code)

2.2所有全角转半角,和前面正好相反,公式对应:全角 = 半角 + 0xfee0

def Q2B(uchar):"""单个字符 全角转半角"""inside_code = ord(uchar)if inside_code == 0x3000:inside_code = 0x0020else:inside_code -= 0xfee0if inside_code < 0x0020 or inside_code > 0x7e: #转完之后不是半角字符返回原来的字符return ucharreturn chr(inside_code)

2.3把整个字符串全角转半角,也可以只转部分如数字和字母

def stringQ2B(ustring):"""把字符串全角转半角"""return "".join([Q2B(uchar) for uchar in ustring])def stringpartQ2B(ustring):"""把字符串中数字和字母全角转半角"""return "".join([Q2B(uchar) if is_Qnumber(uchar) or is_Qalphabet(uchar) else uchar for uchar in ustring])

转载自:
作者:huanghaocs
链接:https://www.jianshu.com/p/152e081fec1b
来源:简书
仅作学习参考,如有侵权,请联系我删除。

Python实现全角与半角相互转换相关推荐

  1. python实现全角和半角互相转换

    全角转半角 # encoding=utf-8 #! /usr/bin/pythonimport sys import reif len(sys.argv) != 3:print("\nERR ...

  2. 全角和半角相互转换(C语言实现)

    目前,我们接触的汉字编码主要包括GBK和GB2312.其中,GB2312又称国标码,它是一个简化字的编码规范,也包括其他的符号.字母.日文假名等,共7445个图形字符,其中汉字占6763个.我们平时说 ...

  3. Java实现全角和半角字符相互转换

    平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...

  4. python中英文半角还是全角_Python3全角转半角的方法

    相信大家都对全角半角的概念已经有所了解了.中文文字永远是全角,只有英文字母.数字键.符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角.标点符号在中英文状态下.全半 ...

  5. java半角转全角_JAVA 半角全角相互转换

    /** * 半角转全角 * @param input String. * @return 全角字符串. */ public static String ToSBC(String input) { ch ...

  6. [文本处理]——Python实现全角字符转化为半角字符

    #全角转半角 def full_to_half(text:str): #输入为一个句子_text = ""for char in text:inside_code = ord(ch ...

  7. Python实现全角半角转换

    直接上代码: def strQ2B(ustring):"""全角转半角:param ustring: string with encoding utf8:return: ...

  8. 文本处理(一)全角转半角及正则匹配

    最近遇到一些情况需要对文本进行预处理,目的是从文本中提取特征.文本内容是不同病人的脾脏B超体检结果.内容格式如下: 其中有一部分内容还含有数字,例如这样: df_with_num=df[df['011 ...

  9. python3环境下的全角与半角转换代码和测试

    全角和半角转换是文本预处理的常见工作之一,然而现在网上一搜python的相关代码,几乎都是python2版本的,因此根据人角和半角的转换规律,将其代码撰写如下: 1.全角与半角之间的转换规律 角字符u ...

最新文章

  1. Spring Batch 基本的批处理指导原则
  2. IE遭破坏后的自我修复方法
  3. jQuery 时间控件推荐(1)
  4. window.parent ,window.top,window.self 详解
  5. liferay-ui:search-container 用法
  6. C语言 · FJ的字符串
  7. https://blog.csdn.net/cscscscsc/article/details/50
  8. jzoj4223-旅游【并查集】
  9. 1.Swift教程翻译系列——关于Swift
  10. 放心了!邮政、顺丰和京东基本全部复工
  11. 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
  12. 拓端tecdat|Excel中计算票面利率Coupon Rate
  13. java篇 之 多态
  14. echar3D地图+3D柱形图
  15. win10自带微软拼音输入法卡死卡顿解决方法汇总
  16. android 如何读取u盘中数据恢复,U盘数据恢复
  17. 蓝桥杯pcf8591读和写
  18. echarts 饼形图{c} 显示 [Obejct,Obejct]
  19. 苹果iPhone 12系列发布会:四款新机亮相均支持5G
  20. Replication进阶(三) 复制心跳详解

热门文章

  1. day5 from 金角大王
  2. 进程和线程有什么区别?
  3. lua中的自定义类型:userdata
  4. Inno Setup 5.5.3 安装包制作工具
  5. SQL Server工具--bcp介绍与使用
  6. byte 类型数组如何定义如何的赋值
  7. 全国行政边界json数据echarts地图geojson生成精确到城镇街道-20211208
  8. 能粘贴图片的富文本编辑器
  9. 拆卡服务器芯片,千元级最新专业卡Quadro FX380详细拆解
  10. linux中vim中swapfile,在vim中撤消从交换文件恢复(Undo recovery from swap file in vim)