Я делаю задачу из Automate the Boring Stuff, пытаясь имитировать метод strip () с использованием регулярного выражения. Я в значительной степени разобрался, работает с пробелами и определенным словом c, которое я хочу удалить. Но при удалении определенного ключевого слова c из конца строки оно всегда обрезает последнюю букву строки, может ли кто-нибудь помочь мне выяснить, почему?
def strip_func(string, *args):
strip_regex = re.compile(r'^(\s+)(.*?)(\s+)$')
mo = strip_regex.findall(string)
if not mo:
rem = args[0]
remove_regex = re.compile(rf'({rem})+(.*)[^{rem}]')
remove_mo = remove_regex.findall(string)
print(remove_mo[0][1])
else:
print(mo[0][1])
Итак, если второй аргумент не передано, то функция удаляет пробелы с обеих сторон строки, я использовал эту строку, чтобы проверить это:
s = ' This is a string with whitespace on either side '
В противном случае она удаляет ключевое слово, что-то вроде функции полосы. Например:
spam = 'SpamSpamBaconSpamEggsSpamSpam'
strip_func(spam, 'Spam')
Вывод:
BaconSpamEgg
Таким образом, если в конце Eggs отсутствует буква «s», то же самое происходит с каждой строкой, которую я пробую. Заранее благодарим за помощь.