Comment effectuer efficacement plusieurs remplacements de chaînes à l'aide d'un dictionnaire en Python ?

Susan Sarandon
Libérer: 2024-10-19 16:02:02
original
175 Les gens l'ont consulté

How to Perform Multiple String Replacements Efficiently Using a Dictionary in Python?

Remplacements de chaînes multiples avec un dictionnaire

Dans de nombreux scénarios de programmation, il devient nécessaire de remplacer des mots ou des expressions spécifiques dans une chaîne à l'aide des valeurs d'un dictionnaire. Pour relever ce défi, il existe plusieurs approches qui utilisent les puissantes capacités de manipulation de chaînes de Python.

Une méthode efficace consiste à utiliser le module re :

<code class="python">import re

s = 'Спорт 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)</code>
Copier après la connexion

Ce code utilise re.compile() fonction pour créer un modèle d’expression régulière (regex) qui correspond aux clés du dictionnaire sous forme de mots entiers. La fonction re.escape() est utilisée pour empêcher tout caractère spécial dans les clés d'interférer avec la syntaxe regex.

Une fois le modèle créé, il est appliqué à la chaîne s à l'aide de la méthode sub(). La fonction lambda passée à sub() extrait la clé correspondante de l'objet de correspondance d'expression régulière (x) et la remplace par la valeur correspondante du dictionnaire (d[x.group()]). La chaîne résultante est stockée dans la variable de résultat.

Dans cet exemple, la sortie serait « Досуг englishA », car les mots « Спорт » et « russianA » dans la chaîne « Спорт russianA » sont remplacés par leur valeurs du dictionnaire.

Il est important de noter que le modèle d'expression régulière créé dans cette approche correspond uniquement à des mots entiers. Si vous avez besoin de faire correspondre des sous-chaînes dans des mots, un modèle différent peut être utilisé :

<code class="python">pattern = re.compile('|'.join(re.escape(k) for k in d.keys()))</code>
Copier après la connexion

Cependant, dans ce scénario, vous devez vous assurer que les clés du dictionnaire sont triées par ordre décroissant par longueur pour éviter que les sous-chaînes ne correspondent. incorrectement.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!