chr()、unichr()和ord(),全半角转换,ValueError: unichr() arg not in range() (wide Python build)

chr()、unichr()和ord()

  chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

  unichr()跟它一样,只不过返回的是 Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的Python是如何被编译的。如果是配置为USC2的Unicode,那么它的允许范围就是 range(65536)或0x0000-0xFFFF;如果配置为UCS4,那么这个值应该是range(1114112)或 0x000000-0x110000。如果提供的参数不在允许的范围内,则会报一个ValueError的异常。

  ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的 字符串)作为参数,返回对应的ASCII数值,或者Unicode数值。

  如果所给的Unicode字符超出了你的Python定义范围,则会引发一个 TypeError的异常:ValueError: unichr() arg not in range() (wide Python build)

def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
    if uchar >= u‘\u4e00‘ and uchar<=u‘\u9fa5‘:
        return True
    else:
        return False  

def is_number(uchar):
"""判断一个unicode是否是数字"""
    if uchar >= u‘\u0030‘ and uchar<=u‘\u0039‘:
        return True
    else:
        return False  

def is_alphabet(uchar):
"""判断一个unicode是否是英文字母"""
    if (uchar >= u‘\u0041‘ and uchar<=u‘\u005a‘) or (uchar >= u‘\u0061‘ and uchar<=u‘\u007a‘):
        return True
    else:
        return False  

def is_other(uchar):
"""判断是否非汉字,数字和英文字符"""
    if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):
        return True
    else:
        return False  

def B2Q(uchar):
"""半角转全角"""
    inside_code=ord(uchar)
    if inside_code<0x0020 or inside_code>0x7e: #不是半角字符就返回原来的字符
        return uchar
    if inside_code==0x0020: #除了空格其他的全角半角的公式为:半角=全角-0xfee0
        inside_code=0x3000
    else:
        inside_code+=0xfee0
    return unichr(inside_code)  

def Q2B(uchar):
"""全角转半角"""
    inside_code=ord(uchar)
    if inside_code==0x3000:
        inside_code=0x0020
    else:
        inside_code-=0xfee0
    if inside_code<0x0020 or inside_code>0x7e: #转完之后不是半角字符返回原来的字符
        return uchar
    return unichr(inside_code)  

def stringQ2B(ustring):
"""把字符串全角转半角"""
    return "".join([Q2B(uchar) for uchar in ustring])  

def uniform(ustring):
"""格式化字符串,完成全角转半角,大写转小写的工作"""
    return stringQ2B(ustring).lower()  

def string2List(ustring):
"""将ustring按照中文,字母,数字分开"""
retList=[]
utmp=[]
for uchar in ustring:
if is_other(uchar):
if len(utmp)==0:
continue
else:
retList.append("".join(utmp))
utmp=[]
else:
utmp.append(uchar)
if len(utmp)!=0:
retList.append("".join(utmp))
return retList</pre><br>
<br>
<pre></pre>
<pre></pre>  
时间: 2024-12-10 04:50:36

chr()、unichr()和ord(),全半角转换,ValueError: unichr() arg not in range() (wide Python build)的相关文章

win7怎么彻底关闭全/半角转换快捷键? imetool.exe

from:http://bbs.csdn.net/topics/370040889 全半角转换最tm的烦人,快捷键是shift+space,不小心按到,就各种不爽, 系统看着是可以重新设置快捷键的,但是在设置那里,你设置好,点击应用,又变成shift+space了..怎么能彻底的关闭? 我用的搜狗输入法,但是感觉这个快捷键和输入法无关... ----------------------------------------------------- 親自試過,改註冊表可以,但偶爾會突然又變回shi

js 日文全半角转换

客户的需求是,输入半角字符或日语假名,筛选出来的结果显示包含该字符的半角形式和全角形式的所有结果,输入全角也是同样的结果.这里就需要将输入的字符全部转为半角和全角,再去匹配结果. 在网上搜了一圈之后,只找到了字符的全半角转换,日语的几乎没有,最后在GitHub到了自己想要的东西. GitHub地址:https://github.com/shogo4405/KanaXS 字符的全半角转换如下: 全角转半角 function ToCDB(str) { var tmp = ""; for (

20170111 ABAP技术小结(全半角转换)

DATA: it_po LIKE it_alv OCCURS 0 WITH HEADER LINE.********************************************************************************************TSTC SAP 事务代码表********************************************************************************************CE

Java 全半角转换

* 全角转半角的 转换函数* @return String*/public static final String full2HalfChange(String QJstr){StringBuffer outStrBuf = new StringBuffer("");String Tstr = "";byte[] b = null;for (int i = 0; i < QJstr.length(); i++) {Tstr = QJstr.substring(

输入法屏蔽与全半角切换

今天工作过程中遇到了edit与combobox中只能输入数字(全角数字也允许),不想通过全半角转换所以只能从输入法入手. 查相关资料得到方法如下: 1.整个窗口禁用输入法(下面采用进程禁用): ImmDisableIME(GetCurrentThreadId()); 2.输入法禁用全角模式: HIMC hImc;   DWORD dwConvMode, dwSentMode;   hImc = ImmGetContext("参数禁用的句柄");  ImmGetConversionSta

chr()、unichr()和ord()

  chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符. unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的Python是如何被编译的.如果是配置为USC2的Unicode,那么它的允许范围就是 range(65536)或0x0000-0xFFFF:如果配置为UCS4,那么这个值应该是range(1114112)或 0x000000-0x110000.如果提供的参数不在

【跟我一起学python吧】python chr()、unichr()和ord()

chr().unichr()和ord() chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的Python是如何被编译的.如果是配置为USC2的Unicode,那么它的允许范围就是range(65536)或0x0000-0xFFFF:如果配置为UCS4,那么这个值应该是range(1114112)或0x000000-0x

python chr()、unichr()和ord()

chr().unichr()和ord() chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的Python是如何被编译的.如果是配置为USC2的Unicode,那么它的允许范围就是range(65536)或0x0000-0xFFFF:如果配置为UCS4,那么这个值应该是range(1114112)或0x000000-0x

java全角和半角转换

package test; public class HalfAndFullConverseUtil { /** * ASCII表中可见字符从!开始,偏移位值为33(Decimal) */ private static final char DBC_CHAR_START = 33; // 半角! /** * ASCII表中可见字符到~结束,偏移位值为126(Decimal) */ private static final char DBC_CHAR_END = 126; // 半角~ /** *