web-dev-qa-db-ger.com

Das letzte Vorkommen der Teilzeichenfolge in Zeichenfolge finden und ersetzen

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.

89
Adam Magyar

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

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

Ich würde eine Regex verwenden:

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

Ein Einzeiler wäre:

str=str[::-1].replace(".",".-",1)[::-1]

6
mazs

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

0
Arpan Saini