Considérez..
dict = {
'':'',
'russianA':'englishA'
}
s = ' russianA'
J'aimerais remplacer toutes les clés dict par leurs valeurs dict respectives en s
.
Considérez..
dict = {
'':'',
'russianA':'englishA'
}
s = ' russianA'
J'aimerais remplacer toutes les clés dict par leurs valeurs dict respectives en s
.
Utilisation de re :
import re
s = 'Спорт not russianA'
d = {
'Спорт':'Досуг',
'russianA':'englishA'
}
pattern = re.compile(r'\b(' + '|'.join(d.keys()) + r')\b')
result = pattern.sub(lambda x: d[x.group()], s)
# Output: 'Досуг not englishA'
Cela ne correspondra qu'à des mots entiers. Si vous n'en avez pas besoin, utilisez le modèle :
pattern = re.compile('|'.join(d.keys()))
Notez que dans ce cas, vous devez trier les mots en descendant par longueur si certaines de vos entrées de dictionnaire sont des sous-chaînes d'autres.
Solution trouvée ici (j'aime sa simplicité) :
def multipleReplace(text, wordDict):
for key in wordDict:
text = text.replace(key, wordDict[key])
return text
Presque le même que ghostdog74, bien que créé indépendamment. Une différence, en utilisant d.get() à la place de d[] peut gérer des éléments qui ne sont pas dans la dictée.
>>> d = {'a':'b', 'c':'d'}
>>> s = "a c x"
>>> foo = s.split()
>>> ret = []
>>> for item in foo:
... ret.append(d.get(item,item)) # Try to get from dict, otherwise keep value
...
>>> " ".join(ret)
'b d x'
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.