关于全角转半角的问题,其实是因为公司运营人员在切换输入法的时候选择了全角,有时候导致程序无法解析。为了避免此类问题再次出现,这里有一个全角转半角的问题。这里,将介绍以下内容:什么是全角字符如何将全角字符转换为半角使用python实现上述转换操作我们知道,在编码中,存储的只是一个数字在计算机中,编码实际上充当了一种转换的过程,如果将一个字符转换为一个数字,就会出现问题。全角和半角一般情况下,普通的英文字符只占用1个字节的空间,1个字节有8位,所以可以存储256个字符。汉字、日文、韩文等CJK字符明显多于256个,所以会用2个字节来存储。在使用英文输入法时,我们将英文字符所占的位置称为半角。又因为1个汉字占据了2个英文字符的位置,所以我们称之为全角。需要注意的是,全角和半角的概念只存在于支持汉字等语言的计算设备上。此外,虽然英文字母、数字键和符号键通常是半角的,但为了排列整齐,英文和其他拉丁字符和标签也可以使用全角格式。因此,我们知道全角占2个字节,半角占1个字节。全角转半角在ASCII编码中,我们知道可以打印的字符只有127-33=94个。这里,我们需要去掉delkey和ASCII码表中的前32位。由于半角和全角只是占用的字节数不同,所以也有94个全角字符可以打印。因此,两者之间是有规律可循的。例如,我们假设半角a在计算机中存储的个数是60,全角a在计算机中存储的个数是1200。假设a的下一个字符是b,而其中存储的数字是61,那么全角b存储的数字应该是1201。所以这个一对一的映射关系要看各种规范是怎么定义的。不同的规范定义会有所不同。因为在Unicode规定中,半角字符是从33开始到126结束。Unicode中的全角编码是从65281开始到65374,细心的话会发现这里少了一个字符,就是一个空格.半角时空格为32,全角时为12288。Python实现转换下面我们用python实现转换操作,我们会检查给定的字符是否为全角,只进行转换全角情况下的操作。defFullToHalf(s):n=[]s=s.decode('utf-8')forcharins:num=ord(char)ifnum==0x3000:num=32elif0xFF01<=num<=0xFF5E:num-=0xfee0num=unichr(num)n.append(num)return''.join(n)这里我们遍历字符串,然后判断其字符的大小。如果给定的字符是全角的,它将被减去。***将它重新组装起来,您就可以开始了。然后我们进行如下测试:s="张三是个帅哥"。result=FullToHalf(s)printresultprint'-'*80prints结果如下:张三是个帅哥。------------------------------------------------------------------张三是个帅哥。当然,除了上述方法外,还有其他的全角转半角的方法。比如我隔壁搞python的哥们,直接用正则表达式匹配,然后批量转换。由于本人比较懒惰,能力有限,只好通过上述方法来简化自己的工作量。
