Python实现全角半角转换的方法


Posted in Python onAugust 18, 2014

本文实例讲解了Python实现全角半角转换的方法,相信对于大家的Python学习能够起到一定的参考借鉴价值。如下所示:

一、全角半角转换概述:

全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理

二、全角转半角:

实现代码如下:

def strQ2B(ustring):
  """把字符串全角转半角"""
  rstring = ""
  for uchar in ustring:
    inside_code=ord(uchar)
    if inside_code==0x3000:
      inside_code=0x0020
    else:
      inside_code-=0xfee0
    if inside_code<0x0020 or inside_code>0x7e:   #转完之后不是半角字符返回原来的字符
      rstring += uchar
    rstring += unichr(inside_code)
  return rstring

三、半角转全角:

实现代码如下:

def strB2Q(ustring):
  """把字符串半角转全角"""
  rstring = ""
  for uchar in ustring:
    inside_code=ord(uchar)
    if inside_code<0x0020 or inside_code>0x7e:   #不是半角字符就返回原来的字符
      rstring += uchar
    if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0
      inside_code=0x3000
    else:
      inside_code+=0xfee0
    rstring += unichr(inside_code)
  return rstring

四、测试代码:

a = strB2Q("abc12345")
print a
b = strQ2B(a)
print b

输出:

abc12345
abc12345

感兴趣的朋友可以调试运行一下,相信会有一定的收获。

Python 相关文章推荐
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
Django读取Mysql数据并显示在前端的实例
May 27 Python
Face++ API实现手势识别系统设计
Nov 21 Python
django模板结构优化的方法
Feb 28 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
Python模块future用法原理详解
Jan 20 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
详解python with 上下文管理器
Sep 02 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 #Python
Python算法之栈(stack)的实现
Aug 18 #Python
Python实现partial改变方法默认参数
Aug 18 #Python
Python实现发送email的几种常用方法
Aug 18 #Python
Python内置数据类型详解
Aug 18 #Python
Python3基础之输入和输出实例分析
Aug 18 #Python
一个计算身份证号码校验位的Python小程序
Aug 15 #Python
You might like
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
Vue数据绑定简析小结
2019/05/07 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python验证企业工商注册码
2015/10/25 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
护理中职生求职信范文
2014/02/24 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫