[python] upper a lower
mtip
mtip na atlas.cz
Středa Leden 28 13:52:45 CET 2009
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.
Po ještě delším zkoumání jsem dočel k tomuto závěru:
---------------------------------------------------------------------------
# -*- coding: cp1250 -*-
import locale, re
print locale.setlocale(locale.LC_ALL, '')
print 'ž', 'ž'.upper()
print u'ž'.encode('cp1250'), u'ž'.upper().encode('cp1250')
print 'ž', unicode('ž','cp1250').upper().encode('cp1250')
print u'ž'==u'Ž'.lower()
if re.search(u'ž', u'Ž',re.IGNORECASE):
print 'stejne'
else:
print 'ruzne'
if re.search(u'ž'.encode('cp1250'), u'Ž'.encode('cp1250'),re.IGNORECASE):
print 'stejne'
else:
print 'ruzne'
---------------------------------------------------------------------------
'ž'.upper() - nefunguje nikdy - bez ani při nastaveném locale
u'ž'.upper() - funguje vždycky nehledě na locale
re.search s IGNORECASE - nefunguje nikdy - locale nelocale
Prostě podpora národních znaků a unicode, jak má být :-).
Možná je tomu na linuxu jinak.
--
Mirek N.
Další informace o konferenci Python