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

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

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

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    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学习网