Maison  >  Article  >  développement back-end  >  Comment effectuer efficacement plusieurs remplacements de chaînes à l’aide d’un dictionnaire en Python ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-19 16:02:02176parcourir

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>

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>

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!

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