很简单,就是把字符分别转换成简体和繁体,再和原字符对比:
- 原字符 == 简体 and 原字符 == 繁体,是简繁通用字;
- 原字符 == 简体 and 原字符 != 繁体,是简体字;
- 原字符 != 简体 and 原字符 == 繁体,是繁体字;
统计简体字和繁体字的数量,谁的数量多,就判定为简体或是繁体。
- 安装依赖库
pip install opencc
- 代码
import opencc
# 简体转繁体模型
converter1 = opencc.OpenCC('s2t.json')
# 繁体转简体模型
converter2 = opencc.OpenCC('t2s.json')
# 标点符号
point_text = '''`!@#$%^&*()_+{}-=[]\\|;:'",<.>/?·~~!@#¥%……&*()——+-=【】{}、|;:‘”,《。》、? '''
def check_lang(text):
# 简体字数量
zh_hans_count = 0
# 繁体字数量
zh_hant_count = 0
# 简繁通用字数量
default_count = 0
# 英文字数量
en_us_count = 0
# 默认语言
lang = "简体"
for var in text:
# 忽略空字符和标点符号和数字
if not var.strip() or var in point_text or var.isdigit():
continue
if u'\u4e00' <= var <= u'\u9FBF':
# 转成简体
zh_hans = converter2.convert(var)
# 转成繁体
zh_hant = converter1.convert(var)
if var == zh_hans and var != zh_hant:
# 是简体,不是繁体的,是现代简体(过滤掉即是简体又是繁体的字)
zh_hans_count += 1
# print(f"识别到简体字: {var}")
elif var != zh_hans and var == zh_hant:
# 不是简体,是繁体的,是现代繁体
zh_hant_count += 1
# print(f"识别到繁体字: {var}")
else:
default_count += 1
# print(f"丢弃通用文字: {var}")
else:
# 不是中文,既是英文
en_us_count += 1
# print(f"识别到英文字: {var}")
if zh_hant_count and zh_hant_count >= zh_hans_count:
lang = "繁体"
elif zh_hans_count:
lang = "简体"
elif default_count:
lang = "简体"
elif en_us_count:
lang = "英文"
print(f"简体字: {zh_hans_count}, 繁体字: {zh_hant_count}, 简繁通用字: {default_count}, 英文字: {en_us_count}, 判定为: {lang}")
return lang