De droite à gauche de la chaîne de remplacer en Python?
Je veux faire une chaîne de remplacer en Python, mais seulement la première instance allant de droite à gauche. Dans un monde idéal, j'aurais:
myStr = "mississippi"
print myStr.rreplace("iss","XXX",1)
> missXXXippi
Quelle est la meilleure façon de le faire, étant donné que rreplace
n'existe pas?
Vous devez vous connecter pour publier un commentaire.
rsplit
etjoin
pourrait être utilisé pour simuler les effets d'unerreplace
reverse
?Le moteur d'expressions régulières cosumes toutes les cordes et commence alors retour en arrière jusqu'à
iss
est trouvé. Puis il remplace le trouve chaîne avec le besoin de modèle.De la vitesse tests
La solution avec
[::-1]
s'avère être plus rapide.La solution avec
re
était seulement plus rapide pour chaînes longues (plus de 1 million de symboles).iss
est quelque part dans le début de la chaîne, il va prendre un certain temps pour bracktrack jusqu'à ce que le moteur trouve une position oùiss
matchs.[::-1]
dans les autres solutions sont plus rapide 🙂timeit
module.re
solution est dans ce cas spécial, environ 9 fois plus lent que le mien avec[::-1]
(12.6 µs vs 1.36 µs).vous pouvez inverser une chaîne de caractères comme suit:
à remplacer, il suffit d'ajouter le
.replace
:cependant maintenant votre chaîne est à l'envers, afin de ré-inverser:
et vous avez terminé.
Si votre remplacement de chaînes sont statiques juste revenir en arrière dans le fichier afin de réduire les frais.
Si non, le même truc fonctionne.
Vous pouvez également utiliser
str.rpartition()
qui divise la chaîne par le séparateur spécifié à partir de la droite et retourne un tuple:C'est un peu une sale hack, mais vous pouvez inverser la chaîne et le remplacer avec aussi inversé les cordes.
reverse()
méthode pour les chaînes.