【问题标题】:Python: make all non-combining unicode characters combiningPython:使所有非组合的unicode字符组合
【发布时间】:2021-12-07 09:24:45
【问题描述】:

我有用非组合字符表示的带有重音符号和变音符号的字符串:

vyˇcíslitelnost (nerozhodnutelnost, v ˇety o neúplnosti),um ˇelá inteligence (automatické odvozování, rezoluce), univerzální nástroje: SAT a SMT ˇrešiˇce

我想把它们变成组合字符。例如上面的字符串看起来像:

vyčíslitelnost (nerozhodnutelnost, věty o neúplnosti),umělá inteligence (automatické odvozování, rezoluce), univerzální nástroje: SAT a SMT řešiče

我怎样才能做到这一点?我已经尝试过unicodedata.normalize,但它对非组合字符没有影响。

感谢您的帮助

【问题讨论】:

标签: python unicode character-encoding python-unicode


【解决方案1】:

这是我的老派(反pythonic)方法:

import unicodedata

lettersWithCaron = 'ČčĎďĚ켾ŇňŘřŠšŤťŽžDžǍǎǏǐǑǒǓǔǦǧǨǩǰȞȟ' # from Unicode database
caron            = '\u02C7'

astring = 'vyˇcíslitelnost (nerozhodnutelnost, v ˇety o neúplnosti),um ˇelá inteligence (automatické odvozování, rezoluce), univerzální nástroje: SAT a SMT ˇrešiˇce'
for lett in lettersWithCaron:
    astring = astring.replace(
        (caron + unicodedata.normalize( 'NFD',lett)).replace('\u030C',''), lett)
    
print( astring)

输出显示在你的字符串中的一些卡隆(v ˇetyum ˇelá)之前有一个额外的空格(不像ˇrešiˇce)...

.\SO\69647976.py

vyčíslitelnost (nerozhodnutelnost, v ěty o neúplnosti),um ělá 智能 (automatické odvozování, rezoluce), univerzální nástroje: SAT A SMT řešiče

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多