Maison >développement back-end >Tutoriel Python >Comment remplacer plusieurs occurrences de chaîne à l'aide d'un dictionnaire ?

Comment remplacer plusieurs occurrences de chaîne à l'aide d'un dictionnaire ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 16:03:02638parcourir

How to Replace Multiple String Occurrences Using a Dictionary?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn