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

如何在Python中处理孟加拉语同形字符/字符串的相等比较?

在Python中判定视觉相同的孟加拉语同形字符串相等的方法

你遇到的是Unicode里的等价字符序列问题:两个字符串视觉完全一致,但底层由不同的Unicode码点组合而成。比如你给出的例子中,s1里的ড়ি是由独立的ড(U+09A1)和ি(U+09BC)拼接而成,而s2里的ড়ি是单个预组合码点U+09DC,二者属于Unicode标准定义的等价字符组合。

解决这个问题的核心是对字符串做Unicode规范化,把不同的等价编码序列统一成相同的范式。Python的unicodedata模块提供了现成的工具:

import unicodedata

s1 = 'ফটিকছড়ি'
s2 = 'ফটিকছড়ি'

# 将两个字符串统一转换为NFC范式(预组合形式)
normalized_s1 = unicodedata.normalize('NFC', s1)
normalized_s2 = unicodedata.normalize('NFC', s2)

# 此时直接比较即可得到正确结果
print(normalized_s1 == normalized_s2)  # 输出:True

补充说明

  • Unicode规范化有四种常用范式,这里用NFC(Normalization Form C,预组合形式)即可,它会把分解的字符序列合并成单个预组合码点;
  • 也可以用NFD(Normalization Form D,分解形式),它会把预组合码点拆成基础字符+附加标记的序列,只要对两个字符串用同一种范式处理,就能实现等价字符串的相等判定;
  • 这种方法适用于所有符合Unicode标准的复杂脚本语言,不止局限于孟加拉语。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:31:34