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

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

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

前言

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

一、背景介绍

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

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

二、全角半角原理

全角即:Double Byte Character,简称DBC

半角即:Single Byte Character,简称SBC

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

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

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

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

F:\test>type test.txt123456123456abcdefgabcdefg中国你好

三、使用 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 rstringdef 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 rstrings = ”'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/

总结

以上是内存溢出为你收集整理的python3实现全角和半角字符转换的方法示例全部内容,希望文章能够帮你解决python3实现全角和半角字符转换的方法示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1201562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存