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的框架下的web app的详细教程
Apr 30 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
python多进程控制学习小结
Oct 31 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Python selenium的基本使用方法分析
Dec 21 Python
如何在sublime编辑器中安装python
May 20 Python
Python多线程的退出控制实现
Aug 10 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
Python制作一个随机抽奖小工具的实现
Jul 07 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/02/14 PHP
php导入模块文件分享
2015/03/17 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
jQuery实现简单聊天室
2020/02/08 jQuery
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python创建xml的方法
2015/03/10 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python导入模块交叉引用的方法
2019/01/19 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
python 进程池pool使用详解
2020/10/15 Python
python 写一个性能测试工具(一)
2020/10/24 Python
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
测绘工程系学生的自我评价
2013/11/30 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
工作失职检讨书500字
2014/10/17 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
大队委员竞选稿
2015/11/20 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python