简介python在执行代码过程是不知道这个字符是什么意思的、是否是中文,而是把所有代码翻译成二进制也就是000111这种形式,机器可以看懂的语言。 也就是在计算机中所有的字符都是有数字来表示的。汉字也是有数字表示的,Unicdoe4E00~9FFF表示中文,所以如果一个字符的utf-8编码在这个区间内,就说明它是中文。
中文编码对应表GBK
UTF16
UTF8
汉字
D2BB
4E00
E4 B8 80
一
B6A1
4E01
E4 B8 81
丁
C6DF
4E03
E4 B8 83
七
CDF2
4E07
E4 B8 87
万
D5C9
4E08
E4 B8 88
丈
C8FD
4E09
E4 B8 89
三
C9CF
4E0A
E4 B8 8A
上
CFC2
4E0B
E4 B8 8B
下
D8A2
4E0C
E4 B8 8C
丌
实践1. 判断utf-8 代码如下:
代码语言:javascript复制def is_Chinese(word):
for ch in word:
if '\u4e00' <= ch <= '\u9fff':
return True
return False2. 测试用例:
代码语言:javascript复制#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def check_contain_chinese(check_str):
for ch in check_str.decode('utf-8'):
if u'\u4e00' <= ch <= u'\u9fff':
return True
return False
if __name__ == "__main__":
print check_contain_chinese('中国')
print check_contain_chinese('xxx')
print check_contain_chinese('xx中国')结果:
True
False
True
3. 判断字符包含中文:
代码语言:javascript复制 def is_not_en_word(self, word:str):
'''
判断一个词是否是非英文词,只要包含一个中文,就认为是非英文词汇
:param word:
:return:
'''
count = 0
for s in word.encode('utf-8').decode('utf-8'):
if u'\u4e00' <= s <= u'\u9fff':
count += 1
break
if count > 0:
return True
else:
return False
def is_en_mail(self, mail_text:str):
'''
判断一个词是否是非英文词,只要包含一个中文,就认为是非英文词汇
:param word:
:return:
'''
tmp_text = ''.join(mail_text.split())
count = 0
print('tmp_text:', tmp_text)
for s in tmp_text.encode('utf-8').decode('utf-8'):
if u'\u4e00' <= s <= u'\u9fff':
count += 1
if float(count/(tmp_text.__len__())) > 0.1:
return False
else:
return True小结参考: https://blog.csdn.net/QFire/article/details/82753726
https://blog.csdn.net/lanSeFangZhou/article/details/124163110