[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.cz • http://regnarg.matfyz.cz • regnarg 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