0%

python中判断字符是否是汉字、字母以及数字

在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

备注

  1. python2.x和python3.x代码的主要不同之处在于unicode判断的地方;因为python3.x中默认都是使用unicode编码方式处理的;
  2. unicode 分配给汉字(中日韩越统一表意文字)的范围为 4E00-9FFF (目前 unicode 6.3 的标准已定义到 9FCC )
  3. \u4e00-\u9fff 不包含中文符号,如有需要可参考维基

参考文献: