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ý -- [email protected] • http://regnarg.matfyz.cz • [email protected] ———————————————————————————————————————————————————————————————— 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ě _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
