Ich habe eine Phrase mit einigen speziellen markierten Wörtern, die ich ersetzen möchte. Diese Wörter entsprechen einem Schlüssel in einem Wörterbuch, das eine Liste von Wörtern enthält, die ich nach dem Zufallsprinzip durch ersetzen möchte.Python: Ersetzen mehrerer Wörter durch eine zufällige Auswahl
Ich frage mich, ob es einen besseren Weg gibt, dies zu tun, oder ist das, was ich habe, ein gültiger Ansatz? Ich habe das Gefühl, dass es einen klügeren Weg mit lambda
geben kann, aber ich bin mir nicht sicher.
Hoffentlich erklärt der Code für sich!
import random
words = {"fruit":["apples", "bananas", "oranges"],
"veggies":["broccoli", "corn", "cucumbers"]}
txt = "I'm not in a mood for [veggies], I rather have [fruit], and [fruit]."
for key in words:
target_word = "[{0}]".format(key)
while target_word in txt:
txt = txt.replace(target_word, random.choice(words[key]), 1)
Lauf es ein paar Mal zufällig ausgegeben werden:
Ich bin nicht für Mais in einer Stimmung, ich habe eher Bananen und Äpfel.
Ich bin nicht in der Stimmung für Brokkoli, ich habe eher Orangen und Bananen.
Ich bin nicht in der Stimmung für Gurken, ich habe eher Äpfel und Orangen.
..und so weiter ..
Ich sollte erwähnen, dass es in words
und eine beliebige Anzahl von markierten Wörter im Text eine beliebige Anzahl von Tasten sein könnte.
Danke, obwohl ich mag, was du herausgefunden hast, stimme ich etwas mit Python Zen überein. Vielleicht ist es das Beste, einfach bei dem zu bleiben, was ich dann habe. –
@GreenCell Ja, aber re ist schneller. Es lohnt sich, wenn Geschwindigkeit wirklich zählt. – robyschek