在python处理数据的过程中,有时候需要判断给定的字符是否是汉字、字母以及数字;参考网上的程序,给出如下的示例:
python2.x
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
| #!/usr/bin/env python # -*- coding:utf-8-*-
# 判断一个unicode是否是汉字 def is_chinese(uchar): if u'\\u4e00' <= uchar<=u'\\u9fff': return True else: return False
# 判断一个unicode是否是数字 def is_number(uchar): if u'\\u0030' <= and uchar<=u'\\u0039': return True else: return False
\# 判断一个unicode是否是英文字母 def is_alphabet(uchar): if (u'\\u0041' <= uchar<=u'\\u005a') or (u'\\u0061' <= 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
if __name__=="__main__": ustring=u'中国 人名a高频A' # 判断是否有其他字符; for item in ustring: if (is_other(item)): break
|
python 3.x
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
| #!/usr/bin/env python # -*- coding:utf-8-*-
# 判断一个unicode是否是汉字 def is_chinese(uchar): if '\\u4e00' <= uchar<='\\u9fff': return True else: return False
# 判断一个unicode是否是数字 def is_number(uchar): if '\\u0030' <= and uchar<='\\u0039': return True else: return False
# 判断一个unicode是否是英文字母 def is_alphabet(uchar): if ('\\u0041' <= uchar<='\\u005a') or ('\\u0061' <= uchar<='\\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
if __name__=="__main__": ustring=u'中国 人名a高频A' # 判断是否有其他字符; for item in ustring: if (is_other(item)): break
|
备注
- python2.x和python3.x代码的主要不同之处在于unicode判断的地方;因为python3.x中默认都是使用unicode编码方式处理的;
- unicode 分配给汉字(中日韩越统一表意文字)的范围为 4E00-9FFF (目前 unicode 6.3 的标准已定义到 9FCC )
- \u4e00-\u9fff 不包含中文符号,如有需要可参考维基
参考文献: