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

yipeiwu_com7年前Python基础

本文实例讲解了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

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

相关文章

python3文件复制、延迟文件复制任务的实现方法

python3文件复制、延迟文件复制任务的实现方法

使用python版本3.6.1 工作中测试客户端传输报文速率,写了以下两个脚本。 第一个,简单的复制文件并重命名。 第二个,在循环中增加延时的功能。 使用场景将文件复制并重命名(重...

开源Web应用框架Django图文教程

开源Web应用框架Django图文教程

  本文面向:有python基础,刚接触web框架的初学者。   环境:windows7   python3.5.1  pycharm专业版  Django 1.10版  pip3 一、...

Cython编译python为so 代码加密示例

1. 编译出来的so比网上流传的其他方法小很多。 2. language_level  是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指...

python实现Dijkstra静态寻路算法

python实现Dijkstra静态寻路算法

算法介绍 迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 当然目前也有人将它用...

pandas 对group进行聚合的例子

如下所示: DataFrameGroupBy.agg(arg, *args, **kwargs) 例子: >>> df = pd.DataFrame({'A...