【发布时间】:2010-02-11 19:40:36
【问题描述】:
我有一个字符串 ë́aúlt,我想根据字符位置等获取操作的长度。问题是第一个 ë́ 被计算了两次,或者我猜 ë 在位置 0 而 ´ 在位置 1。
在 Python 中是否有任何可能的方式将 ë́ 这样的字符表示为 1?
我正在将 UTF-8 编码用于输出到的实际代码和网页。
编辑:只是关于为什么我需要这样做的一些背景。我正在做一个将英语翻译成 Seneca(一种美洲原住民语言)的项目,并且 ë́ 出现了很多。某些单词的一些重写规则需要了解字母位置(本身和周围的字母)和其他特征,例如重音和其他变音符号。
【问题讨论】:
-
这在 Perl 中很容易通过它的
Unicode::GCString模块来实现,它的方法包括标准的东西,如length、substr和index,它们都在字形上操作而不是代码点或代码单元。它甚至包括columns方法,该方法对于东亚宽/全字符以及组合字符等特别有用。这确实是您想要的,也是这些事情应该工作的方式。但是,我还没有在 Python 中找到等价物。 Perl 比 Python 拥有更灵活和更强大的 Unicode 支持,并且擅长字符串,所以你可以考虑一下。