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 datetime时间格式化去掉前导0
Jul 31 Python
Python中的异常处理简明介绍
Apr 13 Python
基于Python Shell获取hostname和fqdn释疑
Jan 25 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python用SSH连接到网络设备
Feb 18 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继承的一个应用
2011/09/06 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python判断直线和矩形是否相交的方法
2015/07/14 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python实现电脑自动关机
2018/06/20 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python、Matlab求定积分的实现
2019/11/20 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
数控技术与应用毕业生自荐信
2013/09/24 职场文书
如何使用pdb进行Python调试
2021/06/30 Python
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL