python, кириллица, "я"
От: vnp  
Дата: 17.03.09 20:53
Оценка: :))
Новичок в Питоне. Налетел на нежданчик. rstrip съедает букву 'я', если она примыкает к удаляемому хвосту:

Python 2.5.2 (r252:60911, Mar 11 2009, 14:39:42) 
[GCC 4.1.2 (Gentoo 4.1.2 p1.1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'яться'.rstrip(u'ться')

>>> print u'яться'.rstrip(u'ься')
ят
>>>


Эксперимены показали, что страдает только 'я'.
Все в utf-8.

Баг в Питоне или в моих руках?

18.03.09 10:10: Перенесено из 'Прочее'
Re: python, кириллица, "я"
От: SergH Россия  
Дата: 18.03.09 07:34
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Новичок в Питоне. Налетел на нежданчик. rstrip съедает букву 'я', если она примыкает к удаляемому хвосту:


Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on
win32

Воспроизводится. И если без u. Прикольно.
Делай что должно, и будь что будет
Re: python, кириллица, "я"
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 18.03.09 08:27
Оценка: 26 (2) +1
Здравствуйте, vnp, Вы писали:

vnp>Эксперимены показали, что страдает только 'я'.

vnp>Все в utf-8.

Не только "я"

>>> 'rsdnrrss_ddnnrsdn'.rstrip('rsdn')
'rsdnrrss_'
>>>


vnp>Баг в Питоне или в моих руках?


Это не баг. rstrip рассматривает полученный аргумент не как строку, а как множество символов. Т.е. удаляет с конца строки любой символ из переданного ей в аргументах множества до тех пор, пока в исходной строке не встретится символ, отсутствующий в этом множестве.

Собственно, это отражено в документации.

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: python, кириллица, "я"
От: Сергей  
Дата: 18.03.09 08:39
Оценка: 6 (1)
Здравствуйте, vnp, Вы писали:

vnp>Баг в Питоне или в моих руках?


Документация рулит. Внимательно прочитай, что делает метод rstrip()
Re: python, кириллица, "я"
От: vnp  
Дата: 18.03.09 16:35
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>Новичок в Питоне.


Всем спасибо. Действительно, затмение нашло.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.