我尝试使用长度函数计算名称“KUMAR”的字符串,输出为 5,这是正确的。
但是当我尝试用不同的语言(泰米尔语)计算相同的名字时,我期望的输出是 3,因为 “குமார்”是泰米尔语中的三个字母单词,但输出为 6。
len()
函数计算 Unicode 代码点(表示 Unicode 标准中的字符的唯一数字)。我的猜测是,泰米尔语中的每个字符(字素)都由两个 Unicode 代码点组成,这就是 len()
的意义。
您可以使用
regex
(不是 re
)模块来获取正确的计数。
pip install regex
在此示例中:
import regex
def count_graphemes(text):
return len(regex.findall(r'\X', text))
english_name = 'KUMAR'
tamil_name = 'குமார்'
print(f"Length of {english_name}: {count_graphemes(english_name)}")
print(f"Length of {tamil_name}: {count_graphemes(tamil_name)}")
输出为:
Length of KUMAR : 5
Length of குமார் : 3