I have string with accents and diacritics represented by non combining characters:
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
and I want to turn them into combining characters. For example string above will looks like:
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
How can I achive this ? I already tried unicodedata.normalize
but it has no effects on non-combining characters.
Thank you for help
Here's my old-school (anti-pythonic) approach:
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)
Output shows that there is an additional space before some carons (v ˇety
, um ˇelá
) in your string (unlike in ˇrešiˇce
)…
.\SO\69647976.py
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