Remplacement de plusieurs occurrences de chaîne par des valeurs de dictionnaire
Dans un scénario de programmation, vous pouvez rencontrer le besoin de remplacer plusieurs occurrences de mots ou d'expressions spécifiques dans une chaîne à l'aide d'un dictionnaire fourni.
Prenons un exemple :
<code class="python">d = { 'Спорт':'Досуг', 'russianA':'englishA' } s = 'Спорт russianA'</code>
La tâche consiste à remplacer chaque apparition d'une clé du dictionnaire 'd' dans la chaîne 's' avec la valeur du dictionnaire correspondante. Le résultat attendu pour cet exemple est 'Досуг englishA'.
Solution utilisant des expressions régulières
En utilisant le module d'expression régulière intégré 're' de Python, nous pouvons y parvenir remplacement efficace :
<code class="python">import re s = 'Спорт not russianA' d = { 'Спорт':'Досуг', 'russianA':'englishA' } # Escape special characters in dictionary keys keys = (re.escape(k) for k in d.keys()) # Construct a regex pattern with alternating ключей pattern = re.compile(r'\b(' + '|'.join(keys) + r')\b') # Perform substitutions using the provided dictionary result = pattern.sub(lambda x: d[x.group()], s)</code>
Cette approche utilise la méthode 're.sub' pour remplacer les correspondances par les valeurs du dictionnaire 'd'. En utilisant un métacaractère d'échappement « limite » (« b »), nous garantissons que seuls les mots entiers correspondent.
Extension pour les correspondances partielles
Si votre dictionnaire en contient mots comme sous-chaînes d'autres, il est recommandé de trier les clés par longueur décroissante (de la plus grande à la plus petite) avant de générer le modèle d'expression régulière. Cela empêche la correspondance des sous-chaînes au lieu de mots plus gros.
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!