Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.
Удаление начального префикса из строки
Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте функцию, которая проверяет, начинается ли строка source с подстроки pre. Если это так, верните строку без данного префикса; в противном случае верните исходную строку без изменений.
def subtract_prefix(source: str, pre: str) -> str:
# TODO
pass
Ответ
Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.
def subtract_prefix(source: str, pre: str) -> str:
return source[len(pre):] if source.startswith(pre) else source
assert subtract_prefix('abcabc', 'abc') == 'abc'
assert subtract_prefix('xabc', 'abc') == 'xabc'
assert subtract_prefix('abc', '') == 'abc'
assert subtract_prefix('abc', 'abc') == ''
Строки неизменяемы: исходный объект не редактируется, функция возвращает результат. Встроенный removeprefix в Python 3.9+ делает то же самое. Удаление через обычный replace без ограничения затронуло бы и внутренние вхождения, что нарушает условие.