Python判断字符串中是否有中文的四种方法

Written by

in

文章目录
  • import re def contains_chinese(text): # 匹配任意中文字符(包括中文标点符号) pattern = re.compile(r'[u4e00-u9fff]’) return bool(pattern.search(text)) # 测试 text1 = “Hello, 你好!” text2 = “Hello, world!” print(contains_chinese(text1)) # True print(contains_chinese(text2)) # False 说明: 1.[u4e00-u9fff] 匹配基本中文字符范围(适用于大多数情况)。 2.如果需要匹配扩展中文字符(如繁体字、生僻字),可以扩展范围: pattern = re.compile(r'[u4e00-u9fffu3400-u4dbfU00020000-U0002a6dfU0002a700-U0002b73fU0002b740-U0002b81fU0002b820-U0002ceaf]’)
  • def contains_chinese(text): for char in text: if ‘u4e00’ <= char <= ‘u9fff’: return True return False # 测试 print(contains_chinese(“Python 编程”)) # True print(contains_chinese(“Python”)) # False 说明: 直接检查每个字符的 Unicode 编码是否在中文范围内。 适用于不需要正则表达式的简单场景。
  • import unicodedata def contains_chinese(text): for char in text: try: name = unicodedata.name(char) # 获取字符的 Unicode 名称 if “CJK UNIFIED” in name or “CJK COMPATIBILITY” in name: return True except ValueError: continue return False # 测试 print(contains_chinese(“中文”)) # True print(contains_chinese(“abc”)) # False 说明: unicodedata.name(char) 返回字符的 Unicode 名称(如 "CJK UNIFIED IDEOGRAPH-4E00" 表示中文字符)。 适用于精确判断,但性能稍差。
  • 如果还需要检测中文标点符号(如 ,。!?),可以扩展正则表达式: import re def contains_chinese_or_punctuation(text): pattern = re.compile(r'[u4e00-u9fffu3000-u303fuff00-uffef]’) return bool(pattern.search(text)) # 测试 print(contains_chinese_or_punctuation(“Hello,世界!”)) # True 说明: u3000-u303f 匹配中文标点符号(如 ,。、;:「」)。 uff00-uffef 匹配全角符号(如 !?()【】)。
  • 方法 适用场景 优点 缺点 正则表达式 通用情况(推荐) 简洁高效 需要记忆 Unicode 范围 遍历检查 Unicode 简单场景 直观易懂 性能稍差 unicodedata 精确判断 可识别特殊字符 性能较差 扩展标点符号 需要检测标点 更全面 规则更复杂 推荐使用 正则表达式 方法,因为它简洁且适用于大多数情况。 到此这篇关于Python判断字符串中是否有中文的四种方法的文章就介绍到这了,更多相关Python判断字符串内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python判断字符串是否包含特定子串的7种方法 python判断字符串是否是回文的方法小结 Python如何判断字符串中是否包含特殊字符并替换 Python字符串对齐和判断方法汇总 4种python判断字符串是否包含关键字的方法 python中判断字符串值是否为数字的方法 python 判断字符串是否为空的多种方法 python中的空值判断和空字符串判断方式
  • 目录
    • 方法 1:使用正则表达式(推荐)
    • 方法 2:遍历字符串检查 Unicode 编码
    • 方法 3:使用 unicodedata 模块(更精确)
    • 方法 4:检查中文标点符号(可选)
    • 总结

    在 Python 中,判断字符串中是否包含中文字符,可以使用正则表达式或Unicode 编码范围检查。以下是几种方法:

    import re
    
    def contains_chinese(text):
        # 匹配任意中文字符(包括中文标点符号)
        pattern = re.compile(r'[u4e00-u9fff]')
        return bool(pattern.search(text))
    
    # 测试
    text1 = "Hello, 你好!"
    text2 = "Hello, world!"
    print(contains_chinese(text1))  # True
    print(contains_chinese(text2))  # False
    

    说明:

    1.[u4e00-u9fff] 匹配基本中文字符范围(适用于大多数情况)。

    2.如果需要匹配扩展中文字符(如繁体字、生僻字),可以扩展范围:

    pattern = re.compile(r'[u4e00-u9fffu3400-u4dbfU00020000-U0002a6dfU0002a700-U0002b73fU0002b740-U0002b81fU0002b820-U0002ceaf]')
    

    def contains_chinese(text):
        for char in text:
            if 'u4e00' <= char <= 'u9fff':
                return True
        return False
    
    # 测试
    print(contains_chinese("Python 编程"))  # True
    print(contains_chinese("Python"))      # False
    

    说明:

    • 直接检查每个字符的 Unicode 编码是否在中文范围内。
    • 适用于不需要正则表达式的简单场景。

    import unicodedata
    
    def contains_chinese(text):
        for char in text:
            try:
                name = unicodedata.name(char)  # 获取字符的 Unicode 名称
                if "CJK UNIFIED" in name or "CJK COMPATIBILITY" in name:
                    return True
            except ValueError:
                continue
        return False
    
    # 测试
    print(contains_chinese("中文"))  # True
    print(contains_chinese("abc"))   # False
    

    说明:

    • unicodedata.name(char) 返回字符的 Unicode 名称(如 "CJK UNIFIED IDEOGRAPH-4E00" 表示中文字符)。
    • 适用于精确判断,但性能稍差。

    如果还需要检测中文标点符号(如 ,。!?),可以扩展正则表达式:

    import re
    
    def contains_chinese_or_punctuation(text):
        pattern = re.compile(r'[u4e00-u9fffu3000-u303fuff00-uffef]')
        return bool(pattern.search(text))
    
    # 测试
    print(contains_chinese_or_punctuation("Hello,世界!"))  # True
    

    说明:

    • u3000-u303f 匹配中文标点符号(如 ,。、;:「」)。
    • uff00-uffef 匹配全角符号(如 !?()【】)。

    方法 适用场景 优点 缺点
    正则表达式 通用情况(推荐) 简洁高效 需要记忆 Unicode 范围
    遍历检查 Unicode 简单场景 直观易懂 性能稍差
    unicodedata 精确判断 可识别特殊字符 性能较差
    扩展标点符号 需要检测标点 更全面 规则更复杂

    推荐使用 正则表达式 方法,因为它简洁且适用于大多数情况。

    到此这篇关于Python判断字符串中是否有中文的四种方法的文章就介绍到这了,更多相关Python判断字符串内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python判断字符串是否包含特定子串的7种方法
    • python判断字符串是否是回文的方法小结
    • Python如何判断字符串中是否包含特殊字符并替换
    • Python字符串对齐和判断方法汇总
    • 4种python判断字符串是否包含关键字的方法
    • python中判断字符串值是否为数字的方法
    • python 判断字符串是否为空的多种方法
    • python中的空值判断和空字符串判断方式

    站内搜索