Python:字符中文判断及编码识别
python在执行代码过程是不知道这个字符是什么意思的、是否是中文,而是把所有代码翻译成二进制也就是000111这种形式,机器可以看懂的语言。 也就是在计算机中所有的字符都是有数字来表示的。汉字也是有数字表示的,Unicdoe4E00~9FFF表示中文,所以如果一个字符的utf-8编码在这个区间内,就说明它是中文。1. 判断utf-8 代码如下:2. 测试用例:结果:TrueFalseTrue3
·
简介
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 代码如下:
def is_Chinese(word):
for ch in word:
if '\u4e00' <= ch <= '\u9fff':
return True
return False
2. 测试用例:
#-*- 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. 判断字符包含中文:
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
更多推荐
所有评论(0)