Как заменить несколько подстрок в строке?

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

В настоящее время у меня есть

string.replace("condition1", "")

, но я хотел бы иметь что-то вроде

string.replace("condition1", "").replace("condition2", "text")

, хотя это не кажется хорошим синтаксисом

, как это правильно сделать? вроде как в grep / regex вы можете использовать \ 1 и \ 2 для замены полей на определенные строки поиска

246
задан martineau 8 December 2017 в 06:57
поделиться

1 ответ

Я чувствую, что для этого вопроса нужна одна строка рекурсивный ответ функции лямбды для полноты, просто так. Таким образом, там:

>>> mrep = lambda s, d: s if not d else mrep(s.replace(*d.popitem()), d)

Использование:

>>> mrep('abcabc', {'a': '1', 'c': '2'})
'1b21b2'

Примечания:

  • Это использует входной словарь.
  • Python dicts сохраняют порядок записи с 3,6; соответствующие протесты в других ответах больше не релевантны. Для обратной совместимости можно было обратиться к основанной на кортеже версии:
>>> mrep = lambda s, d: s if not d else mrep(s.replace(*d.pop()), d)
>>> mrep('abcabc', [('a', '1'), ('c', '2')])
0
ответ дан 23 November 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: