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

yipeiwu_com6年前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

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

相关文章

使用Python实现微信提醒备忘录功能

使用Python实现微信提醒备忘录功能

最近工作比较繁杂,经常忘事,有时候记了备忘录结果却忘记看备忘录,但是微信是每天都会看的,于是就想到写 一个基于微信的提醒系统。总体思路是将待办事项记录到在线记事本,通过建立定时任务,每天...

python3利用Dlib19.7实现人脸68个特征点标定

python3利用Dlib19.7实现人脸68个特征点标定

0.引言 利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68点标定,利用OpenCv进行图像化处理,在人脸上画出68个点,...

python django model联合主键的例子

今天,在家试试django的model的设置,如何设置的联合主键,我经过查资料和实践,把结果记录如下: 例如: class user(Model): id=AutoField(pr...

python中时间转换datetime和pd.to_datetime详析

python中时间转换datetime和pd.to_datetime详析

前言 我们在python对数据进行操作时,经常会选取某一时间段的数据进行分析。这里为大家介绍两个我经常用到的用来选取某一时间段数据的函数:datetime( )和pd.to_dateti...

Matplotlib scatter绘制散点图的方法实现

Matplotlib scatter绘制散点图的方法实现

前言 考虑到很多同学可能还没有安装matplotlib包,这里给大家提供我常用的安装方法。首先Win键 + R,输入命令cmd打开命令行工具,再次在命令行工具中输入pip install...