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

如何解决Python中僧伽罗语单词isalpha()返回结果不准确的问题?

解决僧伽罗语单词isalpha()判断错误的问题

问题原因

Python的str.isalpha()方法仅将Unicode类别为字母(以L开头,如Lu、Ll)的字符视为字母,而僧伽罗语中的元音附标(比如单词කෑම里的ෑ)属于非间距组合标记(Mn类),这类字符不会被isalpha()识别为字母,导致包含此类标记的僧伽罗语单词返回False。

解决方法

自定义判断函数,直接检查字符是否属于僧伽罗语的Unicode编码范围(U+0D80 至 U+0DFF),该范围内包含僧伽罗语的字母、元音附标等所有相关字符,能准确判断是否为僧伽罗语单词。

实现代码

def is_sinhala_word(word):
    # 僧伽罗语Unicode编码范围:0x0D80 到 0x0DFF
    return all(0x0D80 <= ord(char) <= 0x0DFF for char in word)

# 测试示例
for word in ['මට', 'කෑම', 'කන්න', 'ඕන']:
    print(is_sinhala_word(word))

输出结果

True
True
True
True

扩展:判断句子中的僧伽罗语单词

如果需要从混有英语的句子中筛选僧伽罗语单词,可以结合分词逻辑:

def extract_sinhala_words(sentence):
    sinhala_words = []
    for word in sentence.split():
        if is_sinhala_word(word):
            sinhala_words.append(word)
    return sinhala_words

# 测试
sentence = "මට කෑම වേണේ I need food"
print(extract_sinhala_words(sentence))  # 输出: ['මට', 'කෑම', 'වേണේ']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:10:37