zoukankan      html  css  js  c++  java
  • 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>  

     

     

     

  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/timssd/p/4709615.html
Copyright © 2011-2022 走看看