【问题标题】:Python 3 unicode ZWJ error with String replace字符串替换的 Python 3 unicode ZWJ 错误
【发布时间】:2016-05-17 07:33:26
【问题描述】:

我需要用 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 输入,它应该将 නූ 作为 Unicode 输出。但取而代之的是 න ූ

澄清更多,

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

这个 න 和 ූ 必须不带空格连接。我认为 ZWJ (\u200D) 在这里发挥了作用。所以我尝试了

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

给出相同的结果。

我该如何解决这个问题?

【问题讨论】:

    标签: string python-3.x unicode


    【解决方案1】:

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

    #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}'
    

    【讨论】:

    • 非常感谢@Mark 的回答,我发现 Ubuntu 终端中也存在渲染错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多