使用String替换Python 3 unicode ZWJ错误

时间:2016-05-17 07:33:27

标签: string python-3.x unicode

我需要用UNICODE(Sinhala)替换ANSII字符。我使用带循环的列表来执行以下操作,

for i in range (len(charansi)):
    for j in range (len(charUni)):
        s = charansi[i] + ansimod[j]
        v = charUni[i] + modUni[j] 
        textSource = textSource.replace(s, v)

如果我们使用n + uu作为ANSII输入,它应该给出out作为Unicode输出。但不是那样,它给出了නූ

澄清更多,

charansi = n
ansimod = uu
charUni = න
modUni =  ූ

此න和ූ必须在没有空格的情况下加入。我认为ZWJ(\ u200D)在这里发挥了作用。所以我试过

v = u"\u200D".join((consonantsUni[i], vowelModifiersUni[j]))

给出相同的结果。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您的问题有点令人困惑,但这只是有效:

#coding:utf8
charansi = 'n'
ansimod = 'uu'
charUni = 'න'
modUni =  'ූ'

v = s.replace(charansi+ansimod,charUni+modUni)
print(v)

输出:

නූ

如果这不是您想要的,请创建一个问题的工作示例。

您还可以使用以下内容使字符更清晰。至少在我的浏览器上,修改器没有很好地显示。

charUni = '\N{SINHALA LETTER DANTAJA NAYANNA}'
modUni = '\N{SINHALA VOWEL SIGN DIGA PAA-PILLA}'