J'ai donc une longue liste de chaînes dans le même format, et je veux trouver le dernier "." caractère dans chacun d'eux, et remplacez-le par ". -". J'ai essayé d'utiliser rfind, mais je n'arrive pas à l'utiliser correctement pour ce faire.
104
Réponses:
Cela devrait le faire
la source
Pour remplacer par la droite:
Utilisé:
la source
replacements=None
paramètre me semble être une erreur car si le paramètre est omis, la fonction donnera une erreur (essayé en Python 2.7). Je suggérerais de supprimer la valeur par défaut, de la définir sur -1 (pour des remplacements illimités) ou de mieux la fairereplacements=1
(ce qui, à mon avis, devrait être le comportement par défaut pour cette fonction particulière en fonction de ce que veut l'OP). Selon la documentation, ce paramètre est facultatif, mais il doit être un int s'il est donné.". -".join("asd.asd.asd.".rsplit(".", 1))
. Tout ce que vous faites est d'effectuer une séparation de chaîne du côté droit pour 1 occurrence et de joindre à nouveau la chaîne en utilisant le remplacement.J'utiliserais un regex:
la source
\.(?=[^.]*$)
Une seule ligne serait:
str=str[::-1].replace(".",".-",1)[::-1]
la source
.replace
sur une chaîne inversée. Les deux chaînes passées doiventreplace
également être inversées. Sinon, lorsque vous inversez la chaîne une deuxième fois, les lettres que vous venez d'insérer seront à l'envers. Vous ne pouvez l'utiliser que si vous remplacez une lettre par une lettre, et même dans ce cas, je ne mettrais pas cela dans votre code au cas où quelqu'un devrait le changer à l'avenir et commencer à se demander pourquoi un mot est écrit sdrawkcab.Vous pouvez utiliser la fonction ci-dessous qui remplace la première occurrence du mot de droite.
la source
# si vous voulez trouver l'index de la dernière occurrence de n'importe quelle chaîne, dans notre cas, nous trouverons # l'index de la dernière occurrence de avec
# le résultat sera 44, car l'index commence à 0.
la source
Approche naïve:
La réponse d'Aditya Sihag avec un seul
rfind
:la source
a
?'. -'
dans la sortie.replace_right
êtes beaucoup plus gentil)