Ich habe also eine lange Liste von Zeichenfolgen 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 anscheinend nicht richtig verwenden, um dies zu tun.
104
Antworten:
Das sollte es tun
quelle
So ersetzen Sie von rechts:
In Benutzung:
quelle
replacements=None
Parameter zu haben scheint mir ein Fehler zu sein, denn wenn der Parameter weggelassen wird, gibt die Funktion einen Fehler aus (versucht in Python 2.7). Ich würde vorschlagen, entweder den Standardwert zu entfernen, ihn auf -1 zu setzen (für unbegrenztes Ersetzen) oder ihn besser zu machenreplacements=1
(was meiner Meinung nach das Standardverhalten für diese bestimmte Funktion sein sollte, je nachdem, was das OP will). Gemäß den Dokumenten ist dieser Parameter optional, muss aber ein int sein, wenn er angegeben ist.". -".join("asd.asd.asd.".rsplit(".", 1))
. Alles, was Sie tun, ist, eine Zeichenfolge von der rechten Seite für 1 Vorkommen aufzuteilen und die Zeichenfolge mithilfe des Ersatzes erneut zu verbinden.Ich würde einen regulären Ausdruck verwenden:
quelle
\.(?=[^.]*$)
Ein Einzeiler wäre:
str=str[::-1].replace(".",".-",1)[::-1]
quelle
.replace
auf einer umgekehrten Saite. Beide übergebenen Zeichenfolgenreplace
müssen ebenfalls umgekehrt werden. Andernfalls sind die gerade eingefügten Buchstaben rückwärts, wenn Sie die Zeichenfolge ein zweites Mal umkehren. Sie können dies nur verwenden, wenn Sie einen Buchstaben durch einen Buchstaben ersetzen, und selbst dann würde ich dies nicht in Ihren Code aufnehmen, falls jemand es in Zukunft ändern muss und sich fragt, warum ein Wort sdrawkcab geschrieben ist.Sie können die folgende Funktion verwenden, die das erste Vorkommen des Wortes von rechts ersetzt.
quelle
# Wenn Sie den Index des letzten Vorkommens einer Zeichenfolge ermitteln möchten, # finden wir in unserem Fall den Index des letzten Vorkommens von with
# Das Ergebnis ist 44, da der Index bei 0 beginnt.
quelle
Naiver Ansatz:
Aditya Sihags Antwort mit einer Single
rfind
:quelle
a
?'. -'
in der Ausgabe um.replace_right
ist viel schöner)