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在七牛云平台的应用(一)
Dec 05 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Python利用递归实现文件的复制方法
Oct 27 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
对python生成业务报表的实例详解
Feb 03 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python简单实现区域生长方式
Jan 16 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 Python
pytorch 如何使用float64训练
May 24 Python
使用tensorflow 实现反向传播求导
May 26 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
浅析PHP Socket技术
2013/08/02 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
密码强度检测效果实现原理与代码
2013/01/04 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
js代码实现轮播图
2020/05/04 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
django url到views参数传递的实例
2019/07/19 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python常用运维脚本实例小结
2020/02/14 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
优秀应届毕业生自荐信
2013/11/16 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
元旦联欢会感言
2014/03/04 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书