Dans Python 3, effectuer des remplacements basés sur les expressions régulières sur un grand nombre de chaînes peut prendre beaucoup de temps. Cet article explore deux méthodes potentielles pour améliorer l'efficacité de telles opérations dans les scénarios dans lesquels les remplacements doivent se produire uniquement aux limites des mots.
Utiliser la chaîne str. La méthode replace peut potentiellement offrir des performances améliorées par rapport à re.sub. Pour garantir que les remplacements sont limités aux limites des mots, utilisez le métacaractère b dans la méthode de remplacement. Par exemple :
import string # Create a list of common English stop words stop_words = set(line.strip() for line in open('stop_words.txt')) # Define a function for replacing stop words def replace_stop_words(text): # Generate pattern by escaping each stop word with \b metacharacter pattern = r'\b' + string.join(['\b%s\b' % word for word in stop_words]) + r'\b' # Perform the replacement using str.replace return text.replace(pattern, '')
Une autre approche pour accélérer le processus de remplacement consiste à utiliser un trie, qui est une structure de données arborescente créée à partir du liste de mots interdits. La structure du trie permet une correspondance efficace et peut entraîner des gains de performances substantiels.
import trie # Initialize the trie trie = trie.Trie() # Add banned words to the trie for word in banned_words: trie.add(word)
# Obtain the regular expression banned_words_pattern = r"\b" + trie.pattern() + r"\b"
# Perform the replacement using re.sub for sentence in sentences: sentence = sentence.replace(banned_words_pattern, '')
Les deux méthodes offrent des performances potentielles avantages. Le choix dépend des exigences spécifiques et de la taille de la liste de mots interdits. Pour une liste relativement petite, l’approche de remplacement des limites de mots utilisant str.replace peut suffire. Cependant, pour les listes de mots interdits plus volumineuses, la méthode basée sur les triages peut conduire à des temps d'exécution nettement plus rapides.
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!