python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python判断字符串

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

作者:小满大王i

在 Python 中,判断字符串中是否包含中文字符,可以使用正则表达式或Unicode 编码范围检查,本文为大家整理了四种常用方法,有需要的小伙伴可以了解下

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

方法 1:使用正则表达式(推荐)

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-\u9fff\u3400-\u4dbf\U00020000-\U0002a6df\U0002a700-\U0002b73f\U0002b740-\U0002b81f\U0002b820-\U0002ceaf]')

方法 2:遍历字符串检查 Unicode 编码

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

说明:

方法 3:使用 unicodedata 模块(更精确)

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

说明:

方法 4:检查中文标点符号(可选)

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

import re

def contains_chinese_or_punctuation(text):
    pattern = re.compile(r'[\u4e00-\u9fff\u3000-\u303f\uff00-\uffef]')
    return bool(pattern.search(text))

# 测试
print(contains_chinese_or_punctuation("Hello,世界!"))  # True

说明:

总结

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

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

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

您可能感兴趣的文章:
阅读全文