python3实现全角和半角字符转换的方法示例


Posted in Python onSeptember 21, 2017

前言

本文主要给大家介绍了关于python3中全角和半角字符转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、背景介绍

解决什么问题:快速方便的对文本进行全角半角自动转换

适用什么场景:学生答题数据中全角字符替换为半角字符

二、全角半角原理

全角即:Double Byte Character,简称DBC

半角即:Single Byte Character,简称SBC

在 windows 中,中文和全角字符都占两个字节,并且使用了 ascii chart 2 (codes 128?255);
全角字符的第一个字节总是被置为 163,而第二个字节则是相同半角字符码加上128(不包括空格,全角空格和半角空格也要考虑进去);

对于中文来说,它的第一个字节被置为大于163,如'阿'为:176 162,检测到中文时不进行转换。

例如:半角 a 为 65,则全角 a 是 163(第一个字节)、193(第二个字节,128+65)。

全角半角示例:(文本 test.txt 包含全角和半角字符)

F:\test>type test.txt
123456
123456
abcdefg
abcdefg
中国你好

三、使用 Python3 实现全角半角转换

# -*- coding:utf-8 -*-
# i@mail.chenpeng.info

”'
全角即:Double Byte Character,简称:DBC
半角即:Single Byte Character,简称:SBC
”'

def DBC2SBC(ustring):
 ”' 全角转半角 ”'
 rstring = “”
 for uchar in ustring:
  inside_code = ord(uchar)
  if inside_code == 0x3000:
  inside_code = 0x0020
  else:
  inside_code -= 0xfee0
  if not (0x0021 <= inside_code and inside_code <= 0x7e):
   rstring += uchar
   continue
  rstring += chr(inside_code)
 return rstring

def SBC2DBC(ustring):
 ”' 半角转全角 ”'
 rstring = “”
 for uchar in ustring:
  inside_code = ord(uchar)
  if inside_code == 0x0020:
  inside_code = 0x3000
  else:
  if not (0x0021 <= inside_code and inside_code <= 0x7e):
   rstring += uchar
   continue
  inside_code += 0xfee0
  rstring += chr(inside_code)
 return rstring

s = ”'
array(‘0' => ‘0', ‘1' => ‘1', ‘2' => ‘2', ‘3' => ‘3', ‘4' => ‘4',
  ‘5' => ‘5', ‘6' => ‘6', ‘7' => ‘7', ‘8' => ‘8', ‘9' => ‘9',
  ‘A' => ‘A', ‘B' => ‘B', ‘C' => ‘C', ‘D' => ‘D', ‘E' => ‘E',
  ‘F' => ‘F', ‘G' => ‘G', ‘H' => ‘H', ‘I' => ‘I', ‘J' => ‘J',
  ‘K' => ‘K', ‘L' => ‘L', ‘M' => ‘M', ‘N' => ‘N', ‘O' => ‘O',
  ‘P' => ‘P', ‘Q' => ‘Q', ‘R' => ‘R', ‘S' => ‘S', ‘T' => ‘T',
  ‘U' => ‘U', ‘V' => ‘V', ‘W' => ‘W', ‘X' => ‘X', ‘Y' => ‘Y',
  ‘Z' => ‘Z', ‘a' => ‘a', ‘b' => ‘b', ‘c' => ‘c', ‘d' => ‘d',
  ‘e' => ‘e', ‘f' => ‘f', ‘g' => ‘g', ‘h' => ‘h', ‘i' => ‘i',
  ‘j' => ‘j', ‘k' => ‘k', ‘l' => ‘l', ‘m' => ‘m', ‘n' => ‘n',
  ‘o' => ‘o', ‘p' => ‘p', ‘q' => ‘q', ‘r' => ‘r', ‘s' => ‘s',
  ‘t' => ‘t', ‘u' => ‘u', ‘v' => ‘v', ‘w' => ‘w', ‘x' => ‘x',
  ‘y' => ‘y', ‘z' => ‘z',
  ‘(' => ‘(‘, ‘)' => ‘)', ‘〔' => ‘[‘, ‘〕' => ‘]', ‘【' => ‘[‘,
  ‘】' => ‘]', ‘〖' => ‘[‘, ‘〗' => ‘]', ‘”‘ => ‘[‘, ‘”‘ => ‘]',
  ‘\” => ‘[‘, ‘\” => ‘]', ‘{' => ‘{‘, ‘}' => ‘}', ‘《' => ‘<‘,
  ‘》' => ‘>',
  ‘%' => ‘%', ‘+' => ‘+', ‘—' => ‘-‘, ‘-' => ‘-‘, ‘~' => ‘-‘,
  ‘:' => ‘:', ‘。' => ‘.', ‘、' => ‘,', ‘,' => ‘.', ‘、' => ‘.',
  ‘;' => ‘,', ‘?' => ‘?', ‘!' => ‘!', ‘…' => ‘-‘, ‘‖' => ‘|',
  ‘”‘ => ‘”‘, ‘\” => ‘`', ‘\” => ‘`', ‘|' => ‘|', ‘〃' => ‘”‘,
  ‘ ' => ‘ ‘);
  ”'

# 全角转半角
print(DBC2SBC(s))

# 半角转全角
print(SBC2DBC(s))

s = ”'中文测试”'

# 全角转半角
print(DBC2SBC(s))

# 半角转全角
print(SBC2DBC(s))

四、总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

五、参考资料

http://thinkerou.com/2015-06/covert-dbc-sbc/

Python 相关文章推荐
python采用django框架实现支付宝即时到帐接口
May 17 Python
教你用Python写安卓游戏外挂
Jan 11 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
用Python写一段用户登录的程序代码
Apr 22 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
python基于递归解决背包问题详解
Jul 03 Python
pycharm显示远程图片的实现
Nov 04 Python
python对象转字典的两种实现方式示例
Nov 07 Python
python super用法及原理详解
Jan 20 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
python实现二分查找算法
Sep 21 #Python
分享给Python新手们的几道简单练习题
Sep 21 #Python
python验证码识别的示例代码
Sep 21 #Python
Python优先队列实现方法示例
Sep 21 #Python
python虚拟环境virtualenv的安装与使用
Sep 21 #Python
基于python socketserver框架全面解析
Sep 21 #Python
基于python select.select模块通信的实例讲解
Sep 21 #Python
You might like
弄了个检测传输的参数是否为数字的Function
2006/12/06 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
React实现全选功能
2020/08/25 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python while 循环使用的简单实例
2016/06/08 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python读取xlsx的方法
2018/12/25 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
python如何判断IP地址合法性
2020/04/05 Python
python属于解释型语言么
2020/06/15 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
请假条格式范文
2014/04/10 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
洗手间标语
2014/06/23 职场文书
绿色校园广播稿
2014/10/13 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript