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

标签 python

有没有办法在 python 中检查字符串是否包含任何非阿拉伯语、非波斯语字符?

最佳答案

我不知道有任何库将 Unicode 代码点分类为脚本。

你可以使用搜索方 block 的名字,或者角色的名字;像这样:

name = unicodedata.name(ch).lower()
if 'arabic' in name or 'persian' in name:
    # ...

但这很老套。例如,这将包括古波斯文字之类的东西,但不包括鲁米数字,我怀疑如果你想要其中之一,你也会想要另一个。

因此,您真正想要做的是查看 Unicode 标准以查看包含阿拉伯语和波斯语字形的所有 block ,然后决定要包含哪些和不想包含哪些。

或者,对于快捷方式:维基百科有一篇关于 Arabic script in Unicode 的文章.如果您正在查看 future 的答案,您可能想要验证这是否是 Unicode 23.0 的最新版本以及新的 Space Persian 字母和所有其他内容,但截至今天,它看起来是最新的。所以,我将从那里复制:

  • 阿拉伯语(0600–06FF,255 个字符)
  • 阿拉伯语补充(0750–077F,48 个字符)
  • 阿拉伯语扩展 A(08A0–08FF,73 个字符)
  • 阿拉伯文表示形式-A(FB50–FDFF,611 个字符)
  • 阿拉伯文表示形式-B(FE70–FEFF,141 个字符)
  • 鲁米数字符号(10E60–10E7F,31 个字符)
  • 阿拉伯数学字母符号(1EE00—1EEFF,143 个字符)

如果你想要所有这些,你只需这样做:

if ('\u0600' <= ch <= '\u06FF' or
    '\u0750' <= ch <= '\u077F' or
    '\u08A0' <= ch <= '\u08FF' or
    '\uFB50' <= ch <= '\uFDFF' or
    '\uFE70' <= ch <= '\uFEFF' or
    '\U00010E60' <= ch <= '\U00010E7F' or
    '\U0001EE00' <= ch <= '\U0001EEFF'):
    # ...

当然,我怀疑您是否想要所有这些,但是如何修改它以匹配您确实想要的那些应该是显而易见的。

而且您可能需要一些其他不是阿拉伯语或波斯语的字符——例如,可能是或 ch.isspace(),或其他范围更改, 或字符类检查。

如果你想把它变成一个正则表达式,你应该能够弄清楚如何编写一个包含你想要的范围的正则表达式字符类。 (如果不是,则不应使用正则表达式。)

关于python - 检查字符串是否包含python中波斯语/阿拉伯语字符以外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346329/

相关文章:

python - Pandas reshape 从 colname 中提取多个值

python - 在 Python 中格式化多行字符串

python - 检查前 n 行的值是否都大于当前行的值

python - 将 gspread 与代理一起使用

python - 使用具有完全访问权限的 Boto3 将文件上传到 AWS S3

python - 如何用python对扫描页面进行逐字切片?

python - Python中每个句子的首字母大写

python - 如何在keras中手动获取与model.predict()相同的输出

python - Pandas 行明智划分

python - 如何从文件中读取带有字符串键和元组值的字典?