Вы можете просто создать симпатичную маленькую функцию зацикливания.
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
, где text
- полная строка, а dic
- словарь - каждое определение - это строка, которая заменяет совпадение сterm.
Примечание : в Python 3 iteritems()
заменено на items()
Осторожно: Словари Python donнет надежного заказа на итерацию.Это решение решает вашу проблему только в том случае, если:
- порядок замен не имеет значения
- нормально для замены изменить результаты предыдущих замен
Дляэкземпляр:
d = { "cat": "dog", "dog": "pig"}
mySentence = "This is my cat and this is my dog."
replace_all(mySentence, d)
print(mySentence)
Возможный вывод # 1:
"This is my pig and this is my pig."
Возможный вывод # 2
"This is my dog and this is my pig."
Одним из возможных исправлений является использование OrderedDict.
from collections import OrderedDict
def replace_all(text, dic):
for i, j in dic.items():
text = text.replace(i, j)
return text
od = OrderedDict([("cat", "dog"), ("dog", "pig")])
mySentence = "This is my cat and this is my dog."
replace_all(mySentence, od)
print(mySentence)
Вывод:
"This is my pig and this is my pig."
Осторожно # 2: Неэффективно, если ваша строка text
слишком велика или в словаре много пар.