原文链接http://www.jb51.net/article/53903.htm
本文实例讲解了Python实现全角半角转换的方法,相信对于大家的Python学习能够起到一定的参考借鉴价值。如下所示:
一、全角半角转换概述:
全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)
半角字符unicode编码从33~126 (十六进制 0x21~ 0x7E)
空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
二、全角转半角:
实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 else: rstring + = unichr (inside_code) return rstring |
三、半角转全角:
实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | def strB2Q(ustring): """把字符串半角转全角""" rstring = "" for uchar in ustring: inside_code = ord (uchar) if inside_code = = 0x0020 : #除了空格其他的全角半角的公式为:半角=全角-0xfee0 inside_code = 0x3000 else : inside_code + = 0xfee0 rstring + = uchar else: rstring + = unichr (inside_code) return rstring |
四、测试代码:
1 2 3 4 | a = strB2Q( "abc12345" ) print a b = strQ2B(a) print b |
输出:
1 2 | abc12345 abc12345 |
感兴趣的朋友可以调试运行一下,相信会有一定的收获。