我在 OSX 10.9 上使用 python 2.7 并想将 unicode 字符串 ( 05. Чайка.mp3
) 剪切 12 个符号,所以我使用 mp3file[:12]
将其切割 12 个符号。但结果我得到了像 05. Чайка.m
这样的字符串, 只有 11 个符号。但是len(mp3file[:12])
返回 12。看起来问题出在俄语符号 й
上.
这里可能有什么问题?
这个的主要问题 - 我无法正常显示带有 {:<12}'.format(mp3file[:12])
的字符串.
最佳答案
您有带有组合字符的 unicode 文本:
u'05. \u0427\u0430\u0438\u0306\u043a\u0430.m'
U+0306是一个 COMBINING BREVE 代码点,̆
,它与前面的 и
CYRILLIC SMALL LETTER I 组合在一起形成:
>>> print u'\u0438'
и
>>> print u'\u0438\u0306'
й
您可以 normalize that to the combined form , U+0439 CYRILLIC SMALL LETTER SHORT I相反:
>>> import unicodedata
>>> unicodedata.normalize('NFC', u'\u0438\u0306')
u'\u0439'
这使用了 unicodedata.normalize()
function产生一个组合的范式。
关于python - 为什么 python string cut 在请求 12 个符号时返回 11 个符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23322952/