Sie könnten einfach eine nette kleine Schleifenfunktion erstellen.
def replace_all(text, dic):
for i, j in dic.iteritems():
text = text.replace(i, j)
return text
où text
ist die vollständige Zeichenkette und dic
ist ein Wörterbuch - jede Definition ist eine Zeichenkette, die eine Übereinstimmung mit dem Begriff ersetzen wird.
Hinweis : in Python 3, iteritems()
wurde ersetzt durch items()
Vorsichtig: Python-Wörterbücher haben keine zuverlässige Reihenfolge für die Iteration. Diese Lösung löst Ihr Problem nur, wenn:
- die Reihenfolge der Ersetzungen ist unerheblich
- es in Ordnung ist, wenn eine Ersetzung die Ergebnisse früherer Ersetzungen verändert
Aktualisierung: Die obige Aussage bezüglich der Reihenfolge der Einfügung gilt nicht für Python-Versionen größer oder gleich 3.6, da Standard-Dicts geändert wurden, um die Reihenfolge der Einfügung für die Iteration zu verwenden.
Zum Beispiel:
d = { "cat": "dog", "dog": "pig"}
my_sentence = "This is my cat and this is my dog."
replace_all(my_sentence, d)
print(my_sentence)
Möglicher Ausgang #1:
"This is my pig and this is my pig."
Möglicher Ausgang #2
"This is my dog and this is my pig."
Eine mögliche Lösung ist die Verwendung eines 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")])
my_sentence = "This is my cat and this is my dog."
replace_all(my_sentence, od)
print(my_sentence)
Sortie :
"This is my pig and this is my pig."
Vorsicht #2: Ineffizient, wenn Ihr text
String zu groß ist oder viele Paare im Wörterbuch vorhanden sind.
2 Stimmen
Ich habe mir die Zeit genommen, alle Antworten in verschiedenen Szenarien zu testen. Siehe stackoverflow.com/questions/59072514/
4 Stimmen
Die kurze Antwort lautet: Es gibt keinen besseren Weg, dies zu tun.