判断Python str包括中文

2024-10-03 11:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想定义一个函数,检查字符串是否包含在中文中。例如, 勾选“包含中文”(“incinch”),则返回True。check_contain_chinese('xx-cin'),返回True,check_contain_chinese(“xxx”),返回False。 有人能给我一些建议吗?我是新生。。在


Tags: 函数字符串falsetrue定义check建议xxx
3条回答

这里所有现有的答案都将中日韩(代表汉语、日语和韩语)字符与韩语字符(仅代表中文)混淆。在

判断一个汉字是不是中日韩很容易,但很难判断一个汉字是否是汉字,而且标准在不断变化,新的汉字总是不断增加。在

但在实际操作中,人们通常使用u'\u4e00'-u'\u9fa5'来检查一个字符。超出此范围的中日韩字符通常无法用普通中文字体显示。在

有时CJK Radicals SupplementBopomofoCJK Strokes也应视为字符,它们甚至不在中日韩统一汉字('\u4e00'-u'\u9fff')中,但它们在汉语书写系统中是常见而重要的。在

参考文献:

CJK characters

CJK Unified Ideographs

{a6}

GB 2312 to Unicode

GB 12345 to Unicode

检查unicode字符的范围,以确定字符串中的某个字符是否属于中文字符。谷歌搜索显示,所有的汉字都在'\u4e00'和{}之间。你可能想亲自验证一下。在

def check_contain_chinese(check_str):
    for ch in check_str.decode('utf-8'):
        if u'\u4e00' <= ch <= u'\u9fff':
            return True
    return False

汉字有six Unicode maps。只需检查字符串中任何字符的代码是否符合0x4E00-0x9FFF间隔:

>>> any(0x4E00 <= ord(x) <= 0x9FFF for x in u'xx中国')
1: True
>>> any(0x4E00 <= ord(x) <= 0x9FFF for x in u'xxx')
2: False

相关问题 更多 >