erster Post hier und ggf. im Falschen Teilbereich?
Ich wollte in einigen alten Dateien eine Reihe von Strings austauschen.
Hierbei habe ich das Problem, dass in meinen Dicts teilweise die "keys" ein Substring eines anderen "keys" sind.
Hier ein anschauliches Beispiel:
Code: Alles auswählen
# Fehlerhafter Ansatz:
testline = 'ee eee ee eee ee'
dict= {'ee':'Test1','eee':'Test2'}
for key in dict:
testline=testline.replace(key,dict.get(key))
print(testline)
testline = 'ee eee ee eee ee'
dict= {'eee':'Test2','ee':'Test1'}
for key in dict:
testline=testline.replace(key,dict.get(key))
print(testline)
# liefert nicht immer das gewünschte Resultat.
# Output : Test1 Test1e Test1 Test1e Test1
#Zielführend, aber ich setze pro "key"-Länge ein eigenes Dict und der Code wird unschön:
testline = 'ee eee ee eee ee'
d1 = {'ee':'Test1'}
d2 = {'eee':'Test2'}
for key in d2:
testline = testline.replace(key,d2.get(key))
for key in d1:
testline = testline.replace(key,d1.get(key))
print(testline)
#Output: Test1 Test2 Test1 Test2 Test1
Kann ich anderweitig garantieren, dass ich zuerst nach den "keys" größter Länge suche?
Der momentane Lösungsansatz ist bei kleinen Dicts praktikabel, aber wird bei großen Dicts schnell unübersichtlich.
Kennt jemand eine elegantere Lösung als das ursprüngliche dict auszulesen, und sich dicts unterschiedlicher Länge zu erzeugen?
Freue mich über Denkanstöße.