Python判斷unicode是漢字,數字,英文,或者其他字符


功能:

  • 判斷unicode是否是漢字,數字,英文,或者是否是(漢字,數字和英文字符之外的)其他字符。
  • 全角、半角符號相互轉換。


全角、半角?


全角--指一個字符占用兩個標准字符位置。

漢字字符和規定了全角的英文字符及國標GB2312-80中的圖形符號和特殊字符都是全角字符。一般的系統命令是不用全角字符的,只是在作文字處理時才會使用全角字符。


半角--指一字符占用一個標准的字符位置。
通常的英文字母、數字鍵、符號鍵都是半角的,半角的顯示內碼都是一個字節。在系統內部,以上三種字符是作為基本代碼處理的,所以用戶輸入命令和參數時一般都使用半角。

例如:一個英文字符“ABC”如果以全角輸入,會被當成漢字處理,如果以半角輸入,會被當成普通英文字母處理。


# -*- coding: UTF-8 -*-


"""判斷一個unicode是否是漢字"""
def is_chinese(uchar):
    if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
        return True
    else:
        return False


"""判斷一個unicode是否是數字"""
def is_number(uchar):
    if uchar >= u'\u0030' and uchar <= u'\u0039':
        return True
    else:
        return False


"""判斷一個unicode是否是英文字母"""
def is_alphabet(uchar):
    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])


"""將UTF-8編碼轉換為Unicode編碼"""
def convert_toUnicode(string):
    ustring = string
    if not isinstance(string, unicode):
        ustring = string.decode('UTF-8')
    return ustring



if __name__ == "__main__":

    ustring1 = u'收割季節 麥浪和月光 洗着快鐮刀'
    string1 = 'Sky0天地Earth1*'

    ustring1 = convert_toUnicode(ustring1)
    string1 = convert_toUnicode(string1)

    for item in string1:
        # print is_chinese(item)
        # print is_number(item)
        # print is_alphabet(item)
        print is_other(item)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM