python 判斷是不是中文字

來源:互聯網
上載者:User

 下面這個小工具包含了 判斷unicode是否是漢字,數字,英文,或者其他字元。 全形符號轉半形符號。 unicode字串歸一化等工作。 還有一個能處理多音字的漢字轉拼音的程式,還在整理中。

 

#!/usr/bin/env python
# -*- coding:GBK -*-

"""漢文書處理的工具:
判斷unicode是否是漢字,數字,英文,或者其他字元。
全形符號轉半形符號。"""

__author__="internetsweeper <zhengbin0713@gmail.com>"
__date__="2007-08-04"

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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.