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类参数self使用示例
Feb 17 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
python抓取最新博客内容并生成Rss
May 17 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
Python中 map()函数的用法详解
Jul 10 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
python基于opencv批量生成验证码的示例
Apr 28 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 has encountered an Access Violation
2007/01/15 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php错误级别的设置方法
2013/06/17 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
2016/12/16 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
Python 学习笔记
2008/12/27 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
详解python中的装饰器
2018/07/10 Python
Django--权限Permissions的例子
2019/08/28 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
django跳转页面传参的实现
2020/09/17 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
医院见习报告范文
2014/11/03 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis