Python .rstrip () удаляет строку, даже если она не совпадает точно - PullRequest
0 голосов
/ 17 марта 2020
print('345nov'.rstrip('nov'))

приведенный выше код выводит то, что вы ожидаете: 345

Так почему print('345v'.rstrip('nov')) печатает то же самое? Строка не заканчивается на «nov». Это заканчивается только на «V». Но rstrip() все равно лишает его. В любом случае, как я могу заставить его игнорировать это поведение и ничего не удалять, если только конечная строка не соответствует ему точно.

Ответы [ 3 ]

2 голосов
/ 17 марта 2020

Вы получаете это поведение, потому что rstrip() фактически принимает итерацию для своего параметра. Это означает, что строка, которую вы помещаете в ("nov"), интерпретируется как ['n', 'o', 'v']. Это можно доказать в дальнейшем, изменив порядок символов:

>>>"345nov".rstrip("nvo")
345
1 голос
/ 17 марта 2020

Вы можете использовать endswith и индексировать строку:

string = '345v'
suffix = 'nov'
if string.endswith(suffix):
    string = string[:-len(suffix)]
0 голосов
/ 17 марта 2020

Я закончил тем, что делал что-то похожее на @ a_guest.

def rstrip(a, b):
    if a.endswith(b):
        return a[:-len(b)]
    return a
...