Уведомления

Группа в Telegram: @pythonsu

#1 Июль 12, 2011 18:54:17

sashog
От:
Зарегистрирован: 2011-07-12
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть два случая строки... В одном из них работает .lower() в другом не

Привет)
У меня есть две строки S1 и S2. Строка S1 = “ЗаПад” , Строка S2 берется из файла f с помощью f.readline() и она тоже равна “ЗаПад”

Пробую код:

print "S1 = ", S1.lower()           # выводится запад
print "S2 = ", S2.lower() # выводится ЗаПад
Кстати, файл f открыт для чтения и записи командой f = open('file', ‘r+b’)

Мой мозг не понимать!) Как так может быть? Ошибок никаких не выводится, но по принципу работы программы регистр строки S2 должен отобрааться нижним) В чем может быть дело?



Офлайн

#2 Июль 12, 2011 19:37:40

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Есть два случая строки... В одном из них работает .lower() в другом не

С обычными строками функция может работать некорректно. Например:

>>> s = "абЁжз"
>>> print s.lower()
абИжз
Никогда бы не подумал, что буква Ё в нижнем регистре равна букве И…. =)

Используйте Unicode-строки:
>>> s = unicode("абЁжз", "cp1251")
>>> print s.lower()
абёжз



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version