Python实现全角与半角相互转换
全角与半角转换在处理汉语语料中会经常出现,这里分别说明汉字、数字、字母的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实现全角与半角相互转换相关推荐
- python实现全角和半角互相转换
全角转半角 # encoding=utf-8 #! /usr/bin/pythonimport sys import reif len(sys.argv) != 3:print("\nERR ...
- 全角和半角相互转换(C语言实现)
目前,我们接触的汉字编码主要包括GBK和GB2312.其中,GB2312又称国标码,它是一个简化字的编码规范,也包括其他的符号.字母.日文假名等,共7445个图形字符,其中汉字占6763个.我们平时说 ...
- Java实现全角和半角字符相互转换
平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...
- python中英文半角还是全角_Python3全角转半角的方法
相信大家都对全角半角的概念已经有所了解了.中文文字永远是全角,只有英文字母.数字键.符号键才有全角半角的概念,一个字母或数字占一个汉字的位置叫全角,占半个汉字的位置叫半角.标点符号在中英文状态下.全半 ...
- java半角转全角_JAVA 半角全角相互转换
/** * 半角转全角 * @param input String. * @return 全角字符串. */ public static String ToSBC(String input) { ch ...
- [文本处理]——Python实现全角字符转化为半角字符
#全角转半角 def full_to_half(text:str): #输入为一个句子_text = ""for char in text:inside_code = ord(ch ...
- Python实现全角半角转换
直接上代码: def strQ2B(ustring):"""全角转半角:param ustring: string with encoding utf8:return: ...
- 文本处理(一)全角转半角及正则匹配
最近遇到一些情况需要对文本进行预处理,目的是从文本中提取特征.文本内容是不同病人的脾脏B超体检结果.内容格式如下: 其中有一部分内容还含有数字,例如这样: df_with_num=df[df['011 ...
- python3环境下的全角与半角转换代码和测试
全角和半角转换是文本预处理的常见工作之一,然而现在网上一搜python的相关代码,几乎都是python2版本的,因此根据人角和半角的转换规律,将其代码撰写如下: 1.全角与半角之间的转换规律 角字符u ...
最新文章
- Spring Batch 基本的批处理指导原则
- IE遭破坏后的自我修复方法
- jQuery 时间控件推荐(1)
- window.parent ,window.top,window.self 详解
- liferay-ui:search-container 用法
- C语言 · FJ的字符串
- https://blog.csdn.net/cscscscsc/article/details/50
- jzoj4223-旅游【并查集】
- 1.Swift教程翻译系列——关于Swift
- 放心了!邮政、顺丰和京东基本全部复工
- 勒索软件好多都使用恶意LNK链接文件欺骗用户 来看趋势科技分析新型LNK-PowerShell攻击...
- 拓端tecdat|Excel中计算票面利率Coupon Rate
- java篇 之 多态
- echar3D地图+3D柱形图
- win10自带微软拼音输入法卡死卡顿解决方法汇总
- android 如何读取u盘中数据恢复,U盘数据恢复
- 蓝桥杯pcf8591读和写
- echarts 饼形图{c} 显示 [Obejct,Obejct]
- 苹果iPhone 12系列发布会:四款新机亮相均支持5G
- Replication进阶(三) 复制心跳详解
热门文章
- day5 from 金角大王
- 进程和线程有什么区别?
- lua中的自定义类型:userdata
- Inno Setup 5.5.3 安装包制作工具
- SQL Server工具--bcp介绍与使用
- byte 类型数组如何定义如何的赋值
- 全国行政边界json数据echarts地图geojson生成精确到城镇街道-20211208
- 能粘贴图片的富文本编辑器
- 拆卡服务器芯片,千元级最新专业卡Quadro FX380详细拆解
- linux中vim中swapfile,在vim中撤消从交换文件恢复(Undo recovery from swap file in vim)