You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中检测字符串是否包含非波斯/阿拉伯字符?

在Python中检查字符串是否包含阿拉伯语/波斯语以外的字符

这其实用正则表达式就能轻松解决,核心思路是定义阿拉伯语和波斯语覆盖的Unicode字符范围,然后检查字符串里有没有不在这个范围内的字符。我给你写好可直接用的代码,再拆解细节:

核心实现代码

import re

def has_non_arabic_persian_chars(text):
    # 正则模式:匹配所有不属于阿拉伯语/波斯语相关Unicode区块的字符
    # 涵盖了阿拉伯语基本区、补充区、扩展区,以及波斯语特有的字符
    non_ap_pattern = re.compile(r'[^\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]')
    # 如果找到匹配的字符,说明存在非阿语/波斯语字符
    return bool(non_ap_pattern.search(text))

测试示例

你可以用这些例子验证效果:

# 纯波斯语字符串
print(has_non_arabic_persian_chars("سلام دنیا"))  # 输出: False(无其他字符)
# 混合英语和波斯语
print(has_non_arabic_persian_chars("Hello سلام"))  # 输出: True(包含英语)
# 纯阿拉伯语字符串
print(has_non_arabic_persian_chars("مرحبا بالعالم"))  # 输出: False(无其他字符)
# 包含数字的波斯语
print(has_non_arabic_persian_chars("سلام 123"))  # 输出: True(包含数字)

细节调整

如果你的场景需要允许某些特殊字符(比如空格、数字),只需要把这些字符加到正则的「允许列表」里就行:
比如允许空格的版本:

def has_non_arabic_persian_chars_with_space(text):
    # 在原范围基础上加入\s(匹配所有空白字符:空格、制表符等)
    pattern = re.compile(r'[^\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF\s]')
    return bool(pattern.search(text))

print(has_non_arabic_persian_chars_with_space("سلام دنیا"))  # 输出: False(空格被允许)

如果需要更严格的匹配(比如只允许纯阿语/波斯语字母,排除变音符号),可以缩小Unicode范围,比如只保留核心字母:

# 仅允许阿拉伯语和波斯语的基本字母
strict_pattern = re.compile(r'[^\u0621-\u063A\u0641-\u064A\u067E\u0686\u0698\u06A9\u06AF\u06BE\u06CC]')

内容的提问来源于stack exchange,提问作者Navid777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:31:35