【发布时间】:2018-12-20 00:37:51
【问题描述】:
我想将包含重音字符的字符串拆分为字符,而不会将重音字符和字母分开。
一个简单的例子是
>>> o = u"šnjiwgetit"
>>> print u" ".join(o)
s ̌ n j i w g e t i t
或
>>> print list(o)
[u's', u'\u030c', u'n', u'j', u'i', u'w', u'g', u'e', u't', u'i', u't']
而我希望结果为š n j i w g e t i t,以便重音保持在辅音之上。
该解决方案应该适用于更难的字符,例如h̭ɛ̮ŋkkɐᴅ
【问题讨论】:
-
' '.join(unicodedata.normalize('NKFC', o))做你想做的事吗?认为这是使用正确的模式,因为s可能需要组合以使其成为单个字符。 -
' '.join(unicodedata.normalize('NKFC', o)) 给出 ValueError: invalid normalization form
-
糟糕... NFKC...
-
谢谢,这似乎适用于大多数情况。虽然,我真的很感激有一个解决方案,即使在 h̭ɛ̮ŋkkɐᴅ 等更困难的情况下也能工作。使用 unicodedata.normalize 它仍然输出为 h ̭ ɛ ̮ ŋ k k ɐ ᴅ
-
直到有人非常精通 Unicode 的细微差别出现之前——我可能会阅读一点 Python Unicode HOWTO 以及
unicodedata.normalize的所有这些模式的作用...
标签: python-2.7 unicode diacritics non-ascii-characters python-unicode