web-dev-qa-db-fra.com

Trouver la dernière occurrence de sous-chaîne dans la chaîne, en remplacement de celle

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.

89
Adam Magyar

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:]
141
Aditya Sihag

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. -'
24
Varinder Singh

Je voudrais utiliser un regex:

import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
12
Tim Pietzcker

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]
1
bambuste
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. 

0
Arpan Saini