Мой вопрос похож, но отличается от следующего:
Как удалить подстроку из конца строки в Python?
Предположим, у нас есть:
input = "baabbbbb_xx_ba_xxx_abbbbbba"
Мы хотим сохранить все, кроме ba
в конце и ba
в начале.
1) Прямой strip()
не удается
strip
обрабатывает строку как набор. То есть strip
удалит буквы a
и b
, появляющиеся в любом порядке. Мы хотим удалить символы ba
, только если они появляются в , что в точном порядке. Кроме того, в отличие от strip
, мы хотим, чтобы с конца строки были удалены только ноль или одна копия. "x \ n \ n \ n \ n" .strip () удалит много новых строк, а не только одну.
input = "baabbbbb_xx_ba_xxx_abbbbbba"
output = input.strip("ba")
print(output)
prints "_xx_ba_xxx_"
2) Сбой Direct replace()
input = "xx_ba_xxx"
output = input.replace("ba", "")
print(output)
# prints `xx__xxx`
Не круто;мы только хотим удалить последовательность "ba
" из начала и конца строки, а не из середины.
3) Просто нет
input = "baabbbbb_xx_ba_xxx_abbbbbba"
output = "ba".join(input.rsplit("ba", 1))
print(output)
# output==input
Конечная нота
Решение должно быть общим: функция, принимающая любые две входные строки, одна из которых может не быть "ba". Нежелательные начальные и конечные строки могут содержать «.
», «*
» и другие символы, которые не подходят для использования в регулярных выражениях.