Ich habe also eine lange Liste von Strings im selben Format und möchte das letzte "." Zeichen in jedem, und ersetzen Sie es durch ". -". Ich habe versucht, rfind zu verwenden, aber ich kann es scheinbar nicht richtig nutzen, um dies zu tun.
Das sollte es tun
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:]
Von rechts zu ersetzen:
def replace_right(source, target, replacement, replacements=None):
return replacement.join(source.rsplit(target, replacements))
In Benutzung:
>>> replace_right("asd.asd.asd.", ".", ". -", 1)
'asd.asd.asd. -'
Ich würde eine Regex verwenden:
import re
new_list = [re.sub(r"\.(?=[^.]*$)", r". - ", s) for s in old_list]
Ein Einzeiler wäre:
str=str[::-1].replace(".",".-",1)[::-1]
Sie können die folgende Funktion verwenden, die das erste Vorkommen des Wortes von rechts ersetzt.
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 ."
# Wenn Sie den Index des letzten Vorkommens einer beliebigen Zeichenfolge ermitteln möchten, finden Sie in unserem Fall den Index des letzten Vorkommens von with
index = a.rfind("with")
# Das Ergebnis ist 44, da der Index bei 0 beginnt.