Was ich nicht erwartet hatte (extensions). Offensichtlich (blöde mich), weil ich verwendet habe lstrip falsch: lstrip entfernt alle Zeichen, die in der übergebenen vorkommen chars Zeichenfolge, wobei diese Zeichenfolge nicht als echte Zeichenfolge betrachtet wird, sondern als “eine Gruppe von Zeichen, die am Anfang der Zeichenfolge entfernt werden”.
Gibt es eine Standardmethode zum Entfernen einer Teilzeichenfolge am Anfang einer Zeichenfolge?
Nützliche Funktionen für removeprefix() und removesuffix() im neu veröffentlichten Python 3.9.
– Milovan Tomašević
17. Oktober 2020 um 9:55 Uhr
Einzeiler aus der Antwort von @martineau: remove_prefix = lambda text, prefix: text[len(prefix):] if text.startswith(prefix) else text
– Basj
29. April um 16:47 Uhr
Elazar
“Standardweg” kenne ich nicht.
def remove_prefix(text, prefix):
if text.startswith(prefix):
return text[len(prefix):]
return text # or whatever
Wie von @Boris und @Stefan angemerkt, können Sie Python 3.9+ verwenden
text.removeprefix(prefix)
mit dem gleichen Verhalten.
Ab in Python 3.9können Sie verwenden removeprefix. Ein Beispiel finden Sie in dieser Antwort.
– Stefan
27. Mai 2020 um 18:53 Uhr
Kühl! Hinweis: Das Verhalten der neuen Funktion ist genau wie in dieser Antwort (die Zeichenfolge wird unverändert zurückgegeben, wenn sie nicht mit beginnt prefix)
– Elazar
27. Mai 2020 um 23:50 Uhr
Das ist perfekt zum Trimmen hh:mm:ss führende Nullen, ohne signifikante Nullen zu beschädigen. Führend habe ich ersetzt '0:' und dann '0' zu null. Dies erlauben 10: zusammen mit intakt zu bleiben 5:08.
– WinEunuuchs2Unix
18. Oktober 2020 um 2:19 Uhr
removeprefix – besser spät als nie.
– Martinau
24. Februar 2021 um 21:40 Uhr
Und die endswith() parallel ist removesuffix()
– Josiah Yoder
29. Juli um 19:12 Uhr
Kurz und bündig:
def remove_prefix(text, prefix):
return text[text.startswith(prefix) and len(prefix):]
@jamylak es ist wie das “ternäre” und-oder, aber richtig 🙂 … +1, obwohl ich denke, dass es für echten Code etwas zu schlau ist. Und Sie können nicht anders entscheiden, dass eine Ausnahme ausgelöst werden soll.
– Elazar
3. Juni 2013 um 9:15 Uhr
Nun, Sie müssen definitiv viel länger nachdenken, wenn Sie Code wie diesen im Vergleich zur akzeptierten Antwort überprüfen, auch wenn Sie häufiger mit Python arbeiten.
– Thomas
13. August 2020 um 14:37 Uhr
Abgestimmt. Das ist die Art von unnötigem Schlaukram, der sogar das Lesen von MEINEM EIGENEN CODE erschwert.
– HerrR
20. Dezember 2020 um 2:18 Uhr
@MrR: Python hat auch ein weiteres, häufig zu wenig genutztes Feature: Kommentare.
– Martinau
20. Dezember 2020 um 5:33 Uhr
Kommentare laufen Gefahr, sich von dem Code zu lösen, auf den sie sich beziehen, und sind daher weit entfernt von einem Allheilmittel für die Code-Klärung. Ich bevorzuge selbstkommentierenden Code.
– HerrR
27. Dezember 2020 um 4:43 Uhr
Was ist damit (etwas spät):
def remove_prefix(s, prefix):
return s[len(prefix):] if s.startswith(prefix) else s
+1 Prägnant. Aber können Sie es schaffen, im Fehlerfall etwas zu erhöhen und es trotzdem in 2 Zeilen x 80 Spalten zu passen?
Ich denke, Sie können Methoden der verwenden str geben Sie dazu ein. Reguläre Ausdrücke sind nicht erforderlich:
def remove_prefix(text, prefix):
if text.startswith(prefix): # only modify the text if it starts with the prefix
text = text.replace(prefix, "", 1) # remove one instance of prefix
return text
Bisher die eleganteste Lösung.
– Mario Wanka
15. September 2021 um 7:22 Uhr
def remove_prefix(str, prefix):
if str.startswith(prefix):
return str[len(prefix):]
else:
return str
Als Nebenbemerkung, str ist ein schlechter Name für eine Variable, weil sie die überschattet str Typ.
Bisher die eleganteste Lösung.
– Mario Wanka
15. September 2021 um 7:22 Uhr
14359200cookie-checkEntfernen Sie ein Präfix aus einer Zeichenfolge [duplicate]yes
Verwenden Sie in Python 3.9+
str.removeprefix
– Boris Werchowskij
27. April 2020 um 15:48 Uhr
Nützliche Funktionen für
removeprefix()
undremovesuffix()
im neu veröffentlichten Python 3.9.– Milovan Tomašević
17. Oktober 2020 um 9:55 Uhr
Einzeiler aus der Antwort von @martineau:
remove_prefix = lambda text, prefix: text[len(prefix):] if text.startswith(prefix) else text
– Basj
29. April um 16:47 Uhr