Проблема работы с несколькими символами в str.strip () - PullRequest
0 голосов
/ 05 декабря 2018

Я прочитал пост Python str.strip () с регулярным выражением фильтрации неожиданных символов и Официальная документация (это для Python 2, однако в Python 3 он небольше не существует).

Я немного запутался.В результате я провел эксперимент, как показано ниже.

>>> 'hello'.strip('o')
'hell'
>>> 'hello.hello'.strip('.hello')
''
>>> 'hello.hello'.strip('.o')
'hello.hell'
>>> 'hello.hello'.strip('o.')
'hello.hell'
>>> 'Hello.hello'.strip('H')
'ello.hello'
>>> 'Hello.hello'.strip('H.')
'ello.hello'
>>> 'HEllo.hello'.strip('E')
'HEllo.hello'
>>> 'HEllo.hEllo'.strip('E')
'HEllo.hEllo'
>>> 'HEllo.hEllo'.strip('HE')
'llo.hEllo'
>>> 'HEllo.hEllo'.strip('El')
'HEllo.hEllo'
>>> 'HEllo.hEllo'.strip('Eo')
'HEllo.hEll'
>>> 'HEllo.hEllo'.strip('.h')
'HEllo.hEllo'
>>> 'HEllo.hEllo'.strip('o.h')
'HEllo.hEll'
>>> 'HEllo.hEllo'.strip('o-h')
'HEllo.hEll'
>>> 'HEllo.hEllo'.strip('hello')
'HEllo.hE'
>>> 'hello.hello'.strip('hello')
'.'

Я не имею представления о некоторых из приведенных выше результатов.

Кто-нибудь может дать мне объяснение?

И почему эта область удалена из документации по Python 3?

1 Ответ

0 голосов
/ 05 декабря 2018

По существу, .strip() рассматривает строковый аргумент как набор символов.Затем он переходит как к началу, так и к концу строки и удаляет символы, найденные в наборе, пока не найдет символ, не входящий в набор.Учтите это:

>>> '#TEST#'.strip('#') # strips the #'s at the front and end
'TEST'
>>> '#TEST#'.strip('#T') # strips T's and #'s off of the front and end 
'ES'
>>> '#TEST#'.strip('T#') # the order of the chars in the argument doesn't matter
'ES'
>>> '#TEST#'.strip('#ES') # removes the #'s, but not the E or S as the T's "obstruct" strip()
'TEST'
>>> '#TEST#'.strip('T') # will remove nothing, as the #'s "obstruct" strip()
'#TEST#'

Также, как отметил Марк Мейер, документы можно найти по адресу https://docs.python.org/3.7/library/stdtypes.html#str.strip.

...