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数据类型转换函数总结
Mar 11 Python
Python设置默认编码为utf8的方法
Jul 01 Python
Python实现翻转数组功能示例
Jan 12 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
Python批量处理csv并保存过程解析
May 16 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 Python
python中re模块知识点总结
Jan 17 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP中cookie知识点学习
2018/05/06 PHP
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
javascript实现汉字转拼音代码分享
2015/04/20 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python中的魔法方法深入理解
2014/07/09 Python
Python中的闭包详细介绍和实例
2014/11/21 Python
python实现自动更换ip的方法
2015/05/05 Python
Python数据类型学习笔记
2016/01/13 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python中的整除和取模实例
2020/06/03 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
市场部业务员岗位职责
2014/04/02 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python