J'ai donc une longue liste de chaînes dans le même format et je veux trouver le dernier "." caractère dans chacun, et remplacez-le par ". -". J'ai essayé d'utiliser rfind, mais je n'arrive pas à l'utiliser correctement pour le faire.
Cela devrait le faire
old_string = "this is going to have a full stop. some written sstuff!"
k = old_string.rfind(".")
new_string = old_string[:k] + ". - " + old_string[k+1:]
Pour remplacer de la droite:
def replace_right(source, target, replacement, replacements=None):
return replacement.join(source.rsplit(target, replacements))
Utilisé:
>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
Je voudrais utiliser un regex:
import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
Vous pouvez utiliser la fonction ci-dessous qui remplace la première occurrence du mot de droite.
def replace_from_right(text: str, original_text: str, new_text: str) -> str:
""" Replace first occurrence of original_text by new_text. """
return text[::-1].replace(original_text[::-1], new_text[::-1], 1)[::-1]
a = "A long string with a . in the middle ending with ."
# si vous voulez trouver l'index de la dernière occurrence d'une chaîne, Dans notre cas, nous allons # trouver l'index de la dernière occurrence de avec
index = a.rfind("with")
# le résultat sera 44, car l'index commence à 0.