[python] Diakritika v stringu

Filip Štědronský regnarg na seznam.cz
Neděle Leden 18 08:42:19 CET 2009


Dne 18.1.2009 00:41:52 napsal Jan Bednařík:
> Napadá mě že všechny základní ASCII znaky zabírají každý 8 bitů. 
> Pokud
> je tedy délka stringu v bitech větší než počet znaků ve stringu krát
> 8, pak tam bude nějaký znak co nepatří do ASCII (může to být znak s
> diakritikou, nebo nějaký úplně jiný). Jak zjistit délku stringu v
> bitech nevím, poradí strýček Google.

Vzhledem k tomu, že dotazující mluví o kódování stringu, má jej
asi uložen v bajtové podobě (tedy objekt bytes, přip. str v 
Py2.x), tedy délku v bytech vyjádří prostou funkcí len. Pro 
počet znaků by byl nutný převod na str (unicode v Py2.x), který
by byl trochu náročný. Pokud jde skutečně jen o test 
ASCII/ne-ASCII (tzn nemusíme testovat přítomnost přímo české 
diakritiky, ale vyhodnotíme třeba i čínštinu), stačí prostě pro
každý znak testovat zda je ord(c) in range(128). To bude 
fungovat jak v binárním, tak unicode stringu. Pro složitější 
kontroly je nutnost převést na str (unicode) a použít třeba
unicodedata.category pro zjištění příslušnosti znaku do určité
skupiny.

S pozdravem,
Filip Štědronský



-- 
regnarg na matfyz.czhttp://regnarg.matfyz.czregnarg na jabber.cz
————————————————————————————————————————————————————————————————
Každý člověk je anděl s jedním křídlem a dva se musí pevně držet
 spolu, aby mohli létat  •  Láska a přátelství nikdy nezklamou,
zklame vždy člověk • Jediné, co je krásnější, než dávat štěstí,
je dávat lásku • I když lidé nevědí, co je dobro, mají ho v sobě



Další informace o konferenci Python