[python] upper a lower

mtip mtip na atlas.cz
Středa Leden 28 13:03:32 CET 2009


PK> možná pomůže http://www.py.cz/Cestina2X#azen-po-esku.

PK> Jinak funguje toto:

PK> # -*- coding: cp1250 -*-

PK> import locale
PK> # print locale.setlocale(locale.LC_ALL, 'Czech_Czech Republic.1250')
PK> print u'ž', u'ž'.upper()

PK> i toto:

PK> # -*- coding: cp1250 -*-

PK> import locale
PK> print locale.setlocale(locale.LC_ALL, 'Czech_Czech Republic.1250')
PK> print u'ž'.encode("cp1250"), u'ž'.upper().encode("cp1250")

PK> Asi ne všude (myslím Linux), ale na win jo.

Tohle opravdu nefunguje/funguje, akorát nevím proč.

Zkusil jsem tohle:
# -*- coding: cp1250 -*-
#predchozi radek rika v jakem kodovani je muj modul ulozen
import locale
print locale.setlocale(locale.LC_ALL, 'Czech_Czech Republic.1250') #nastavuje locale, mimo jine rozsiruje string o znaky narodni abecedy (treba i ž)

print 'ž', 'ž'.upper()   #chybuje - ale proč ???
print u'ž'.encode('cp1250'), u'ž'.upper().encode('cp1250')    #spravne - to chapu vystup je treba prevest do ASCII v kodovani kteremu rozumi zobrazovac
print 'ž', unicode('ž','cp1250').upper().encode('cp1250') #takhle si ten prevod vynutim sam, to mi prijde ale ze by to nemuselo byt nutne



Může mi někdo vysvětlit, proč 'ž'.upper() chybuje, když podle locale
by měl vědět, jak najít velké Ž a jak zdrojový soubor, tak locale je
nastaveno shodně ?
A proč to dokonce funguje, když neni locale nastavené ?

Přeci locale nastavuje i jiné národní zvyklosti (datum apod), tak proč
mě nutí, abych ho najednou vypnul, když chci porovnat str řetězce ?

-- 
Mirek N.




Další informace o konferenci Python