【发布时间】:2019-10-15 17:19:24
【问题描述】:
下面的python给出了错误的字符串长度和错误的字符。
这里有人知道吗?
>>> w ='lòng'
>>> w
'lòng'
>>> print (w)
lòng
>>> len(w)
5
>>> for ch in w:
... print (ch + "-")
...
l-
o-
-
n-
g-
>>>
【问题讨论】:
-
长度应该是 4 并且 w[1] 应该是 'ò'。 Javascript 和 Visual Basic 可以工作,但 python 不行
-
Yours 是一个 unicode 字符串。用于字符串的 python
len()方法计算 代码点。第二个字符使用 2 个代码点。 -
@rdas 您确定为重复的问题实际上与此处描述的问题相反。
-
重复的目标并不能很好地解释这种特殊情况,IMO,但请查看comparing strings 上的 Unicode How-to 部分,了解 unicode 如何构成重音字符两个单独的字符。
-
@CommandMe 我在 MacOS 上的 Python 3.7 和 3.8 中都测试了
len('lòng'),结果是 4,而不是 5。问题无法重现。