[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