当我们相信Python 3在Unicode上一切正常时,面对这种情况我感到很惊讶。

>>> amma = "அம்மா"
>>> amma
'அம்மா'
>>> len(amma)
5


显然,泰米尔语字符串"அம்மா"由3个字母组成,对于len("அம்மா")的返回值5绝对不会被接受或赞赏。

其他Dravidian或Brahmic脚本如何解决此问题以获得正确的字符串长度?

编辑#1:
考虑到@joey的评论,这个问题可以表述如下。

如何在Python中计算字素长度?

我们知道Swift或Perl6会默认执行此操作

  2> let amma = "அம்மா".characters.count
amma: Distance = 3

最佳答案

它可能有3个字母,但有5个字符:

$ charinfo 'அம்மா'
U+0B85 TAMIL LETTER A [Lo]
U+0BAE TAMIL LETTER MA [Lo]
U+0BCD TAMIL SIGN VIRAMA [Mn]
U+0BAE TAMIL LETTER MA [Lo]
U+0BBE TAMIL VOWEL SIGN AA [Mc]


如果需要更具体,则只需要计算“字母”类别中的字符数即可。

10-08 01:47