我试图找到一种方法,使用python 2.7.1将字符串解析为字形集群。例如,字符串:
details = u"Hello "
我认为应该解析为:
[u"H", u"e", u"l", u"l", u"o", u"\U0001f1e6\U0001f1f9", u"\U0001f1fb\U0001f1ea"]
我正在使用uniseg库中的grapheme_clusters
,但这会产生:
[u"H", u"e", u"l", u"l", u"o", u"\U0001f1e6\U0001f1f9\U0001f1fb\U0001f1ea"]
我对使用2.7.1有严格的要求。我知道python 3.X中的Unicode支持更好。
答案 0 :(得分:4)
此行为过去是正确的,但规则已更改。
从uniseg版本0.7.1开始(当前截至本文),uniseg文档引用了Unicode Standard Annex #29 Version 21中给出的Unicode字形集群边界规则的过时版本。此版本包含规则
不要在区域指标符号之间中断。
最新版本的Unicode字形集边界规则,Unicode Standard Annex #29 Version 29中提到
不要在表情符号标记序列中断开。也就是说,如果在断点之前存在奇数个RI字符,请不要在区域指示符(RI)符号之间中断。
您可以使用uniseg提交错误报告,也可以使用不同的库来实现更新的实施。 uniseg bitbucket页面链接到一些替代方案,例如PyICU。