• 技术文章 >常见问题 >Python常见问题

    python怎么判断是不是中文字符?

    yangyang2020-05-22 15:07:05原创10298

    python中可以通过判断字符的unicode值来判断字符是不是中文字符。

    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
    
    if __name__=="__main__":
            #test Q2B and B2Q
            for i in range(0x0020,0x007F):
                    print Q2B(B2Q(unichr(i))),B2Q(unichr(i))
    
            #test uniform
    
            ustring=u'中国 人名a高频A'
    
            ustring=uniform(ustring)
    
            ret=string2List(ustring)
    
            print ret

    更多Python知识请关注Python自学网

    专题推荐:python
    品易云
    上一篇:python怎么判断进程是否杀掉? 下一篇:如何用Python代码写出音乐?

    相关文章推荐

    • Python是如何捕获异常?• python如何下载网页?• python怎么去掉日期中的横杠?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网