[python] unicode -> ascii
Radek Kanovsky
rk na dat.cz
Středa Září 15 13:07:28 CEST 2004
On Wed, Sep 15, 2004 at 12:29:25PM +0200, Vlada Macek wrote:
> Kdyz uz jsme u toho, chtel bych do Plone pridat taky kod pro automaticke
> generovani ID z titulku polozek. Tedy aby se text s diakritikou a
> mezerami stripnul o hackycarky a mezery se nahradily podtrzitky.
> Existuji udajne neprilis obtizne metody, jak normalizovat unicodovy
> retezec a vymaskovat z nej definici akcentu. Chtel bych se zeptat,
> jestli nekdo nevite o nejakem hotovem kodu, ktery by toto umel. Tedy na
> vstupu diakritika (treba univerzalni, nejen ceska), na vystupu stale
> citelne us-ascii (tedy zadne otaznicky, jako to dela 'iconv -f ... -t
> ...//TRANSLIT'). Dik.
Momentalne pouzivam tohle:
import unicodedata
def unicode_to_ascii (us) :
LCP = 'LATIN SMALL LETTER '
UCP = 'LATIN CAPITAL LETTER '
s = []
for uc in us :
try :
c = uc.encode('ascii')
except :
un = unicodedata.name(uc)
if un.startswith(LCP) :
c = (un[len(LCP):].split()[0]).lower()
elif un.startswith(UCP) :
c = (un[len(UCP):].split()[0]).upper()
s.append(c)
return ''.join(s)
Radek Kaňovský
Další informace o konferenci Python