Python实现字符串全角半角转换
全角字符unicode编码范围65281~65374 (十六进制 0xFF01 ~ 0xFF5E),半角字符unicode编码范围33~126 (十六进制 0x21~ 0x7E)。空格比较特殊,全角为 12288(0x3000),半角为 32 (0x20)
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的所以可以直接通过用+-法来处理非空格数据,对空格单独处理。
全角转半角
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
rstring += unichr(inside_code)
return rstring
半角转全角
def strB2Q(ustring):
"""把字符串半角转全角"""
rstring = ""
for uchar in ustring:
inside_code=ord(uchar)
if inside_code<0x0020 or inside_code>0x7e: #不是半角字符则返回原来的字符
rstring += uchar
if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0
inside_code=0x3000
else:
inside_code+=0xfee0
rstring += unichr(inside_code)
return rstring
另外的实现方法:
def b2q(ustr):
return ''.join(unichr(0x3000 if c == 0x0020 else c+0xfee0 if 0x0020 < c < 0x0080 else c) for c in map(ord, ustr))
def q2b(ustr):
return ''.join(unichr(0x0020 if c == 0x3000 else c-0xfee0 if 0xff00 < c < 0xff80 else c) for c in map(ord, ustr))
释义:
(1)全角---指一个字符占用两个标准字符位置。
汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。
(2)半角---指一字符占用一个标准的字符位置。
ASCII方式的字符,通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。
全角与半角有什么区别?各在什么情况下使用?
全角占两个字节,半角占一个字节。
半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节
在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)。
本文永久链接 http://www.tangblog.info/2010/10/18/python-sbc-case-to-dbc-case.html
rstring += uchar
else:
rstring += unichr(inside_code)
导航栏使用的lavalamp,很早以前就用的是这个,后来又换成上下滑动的,但那个滑动的浏览器兼容性有问题,所以我又把lavalamp换回了
还有,导航栏的效果不错。。
这样啊,我正在研究gae的自定义域名的问题,刚测试一下,感觉可以了,但是使用代理的ghs可能认不出来,囧
pingback还没有开始,昨天该了一个自定义链接 今天有做了一个头像缓存
这个功能看看也马上就要开始了
你一直在忙你的新网站啊,赶快把pingback弄好,咱们来测试一下连通性,哈哈
在文字操作时可能有用处的