Remplacements multiples dans les chaînes à l'aide de dictionnaires
Étant donné un dictionnaire d mappant un ensemble de clés aux remplacements souhaités et une chaîne s contenant ces clés, comment pouvez-vous remplacer chaque occurrence d'une clé dans s par sa valeur correspondante dans d ?
Solution :
L'utilisation du module re de Python permet des remplacements multiples efficaces dans les chaînes en utilisant dictionnaires :
<code class="python">import re s = 'Спорт not russianA' d = { 'Спорт': 'Досуг', 'russianA': 'englishA' } keys = (re.escape(k) for k in d.keys()) pattern = re.compile(r'\b(' + '|'.join(keys) + r')\b') result = pattern.sub(lambda x: d[x.group()], s) print(result) # Output: 'Досуг not englishA'</code>
Cette approche utilise un modèle d'expression régulière qui correspond à des mots entiers correspondant à l'une des clés de d. La fonction lambda dans la méthode sub effectue la substitution en utilisant d.
Pour permettre les remplacements à l'intérieur des mots et pas seulement aux limites des mots, modifiez le modèle :
<code class="python">pattern = re.compile('|'.join(re.escape(k) for k in d.keys()))</code>
Dans ce cas, triez le dictionnaire clés décroissantes par longueur pour empêcher les correspondances de sous-chaînes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!