python3实现全角和半角字符转换的方法示例
前言
本文主要给大家介绍了关于python3中全角和半角字符转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
一、背景介绍
解决什么问题:快速方便的对文本进行全角半角自动转换
适用什么场景:学生答题数据中全角字符替换为半角字符
二、全角半角原理
全角即:DoubleByteCharacter,简称DBC
半角即:SingleByteCharacter,简称SBC
在windows中,中文和全角字符都占两个字节,并且使用了asciichart2(codes128–255);
全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格,全角空格和半角空格也要考虑进去);
对于中文来说,它的第一个字节被置为大于163,如'阿'为:176162,检测到中文时不进行转换。
例如:半角a为65,则全角a是163(第一个字节)、193(第二个字节,128+65)。
全角半角示例:(文本test.txt包含全角和半角字符)
F:\test>typetest.txt 123456 123456 abcdefg abcdefg 中国你好
三、使用Python3实现全角半角转换
#-*-coding:utf-8-*-
#i@mail.chenpeng.info
”'
全角即:DoubleByteCharacter,简称:DBC
半角即:SingleByteCharacter,简称:SBC
”'
defDBC2SBC(ustring):
”'全角转半角”'
rstring=“”
forucharinustring:
inside_code=ord(uchar)
ifinside_code==0x3000:
inside_code=0x0020
else:
inside_code-=0xfee0
ifnot(0x0021<=inside_codeandinside_code<=0x7e):
rstring+=uchar
continue
rstring+=chr(inside_code)
returnrstring
defSBC2DBC(ustring):
”'半角转全角”'
rstring=“”
forucharinustring:
inside_code=ord(uchar)
ifinside_code==0x0020:
inside_code=0x3000
else:
ifnot(0x0021<=inside_codeandinside_code<=0x7e):
rstring+=uchar
continue
inside_code+=0xfee0
rstring+=chr(inside_code)
returnrstring
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/