我试图将空格插入到IPA字符的字符串中,例如将ɔ̃wɔ̃tɨ转换为ɔ̃ w ɔ̃ t ɨ。使用拆分/连接是我的第一个想法:
s = ɔ̃w̃ɔtɨ
s.split('').join(' ') #=> ̃ ɔ w ̃ ɔ p t ɨ正如我通过研究结果所发现的,实际上,带有对话词的字母被编码为两个字符。经过一些研究,我找到了UnicodeUtils模块,并使用了each_grapheme方法:
UnicodeUtils.each_grapheme(s) {|g| g + ' '} #=> ɔ ̃w ̃ɔ p t ɨ这是很好的工作,除了倒置的短尾标记。代码将̑a转换为̑ a。我尝试了标准化(UnicodeUtils.nfc,UnicodeUtils.nfd),但没有成功。我不知道为什么each_grapheme方法对这个特殊的对话框标记有问题,但我注意到在gedit中,breve也被视为一个单独的字符,而不是倾斜体、重音等。因此,我的问题是:是否有一种简单的规范化方法,即将Latin Small Letter A和Combining Inverted Breve组合成Latin Small Letter A With Inverted Breve
发布于 2014-12-06 08:41:39
我理解您的问题涉及Ruby,但我认为问题与Python的问题差不多。一个简单的解决方案是显式地测试组合的指示符号:
import unicodedata
liste=[]
s = u"ɔ̃w̃ɔtɨ"
comb=False
prec=u""
for char in s:
if unicodedata.combining(char):
liste.append(prec+char)
prec=""
else:
liste.append(prec)
prec=char
liste.append(prec)
print " ".join(liste)
>>>> ɔ̃ w̃ ɔ t ɨhttps://stackoverflow.com/questions/23873771
复制相似问题