Hallo,
wie kann ich denn von einem string, wie
a = "Hallo"
das letzte Zeichen, also in diesem Fall "a" löschen..
--> a = "hall"
Schon mal Danke
Liebe Grüße
Teabag
Bei einem String das letzte Zeichen löschen.
Slicing:
Code: Alles auswählen
>>> a = "Hallo"[:-1]
>>> a
'Hall'
Hall,
da möchte ich gern noch eine Frage anschließen:
Es ginge ja auch
Leider verhält sich ".rstrip()" nicht immer so, wie ich es erwarte, nämlich wie Perls "chomp()" für beliebige Zeichen, vor allem wenn ich mehrere Zeichen an ".rstrip()" übergebe.
Weiß jemand, woran das liegt ???
Mein Hack dort herum:
Kann ja auch nicht immer Sinn der Sache sein ...
Viele Grüße
da möchte ich gern noch eine Frage anschließen:
Es ginge ja auch
Code: Alles auswählen
print "Hallo".rstrip("o")
Weiß jemand, woran das liegt ???
Mein Hack dort herum:
Code: Alles auswählen
def chomp(a, b = "\n"):
if len(a) < len(b):
return a
if a.endswith(b):
return a[0: len(a)-len(b)]
return a
def rstrip2(a, b = "\n"):
return chomp(a, b)
print rstrip2("Hallo", "o")
Viele Grüße
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie willst du denn dass es sich verhält?abgdf hat geschrieben:Leider verhält sich ".rstrip()" nicht immer so, wie ich es erwarte, nämlich wie Perls "chomp()" für beliebige Zeichen, vor allem wenn ich mehrere Zeichen an ".rstrip()" übergebe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ok, hier ein Beispiel:Wie willst du denn dass es sich verhält?
Code: Alles auswählen
print "Hallo".rstrip("loo")
Ich will aber, daß der Teilstring am Ende nur dann entfernt wird, wenn er auch wirklich mit dem Ende des Hauptstrings übereinstimmt, sonst soll wiederum der Hauptstring zurückgegeben werden (wie bei Perls "chomp()" im Gegensatz zu Perls "chop()").
Also
Code: Alles auswählen
print "Hallo".rstrip("llo")
Code: Alles auswählen
print "Hallo".rstrip("loo")
Mit meinem "rstrip2()" oben geht, was ich will, aber vielleicht gibt es dazu ja auch eine eingebaute Python-Funktion ?
Viele Grüße
Code: Alles auswählen
In [24]: "Hallo".replace("loo", "")
Out[24]: 'Hallo'
In [25]: "Hallo".replace("llo", "")
Out[25]: 'Ha'
@BlackVivi: Nope das ersetzt ja alle 'loo' oder 'llo' in der Zeichenkette und nicht nur wenn sie am *Ende* stehen.
@abgdf: `rstrip()` macht das was in der Doku steht, wenn Du die gelesen hast und etwas anderes erwartest, ist wohl Deine Erwartung falsch.
Deine `chomp()`-Funktion ist kein Hack, sondern eine Implementierung der Funktion, die Du haben möchtest.
Ist aber noch ein wenig Verbesserungswürdig. Den Längentest würde ich weg lassen, der ist mit `str.endswith()` doch schon abgedeckt. Und die Längen brauchst Du nicht voneinander abziehen, ``-len(b)`` reicht aus.
Und wenn Du das ganze zusätzlich unter dem Namen `rstrip2` verfügbar machen willst, dann spar Dir die extra Funktion und weise einfach das bereits vorhandene Funktionsobjekt zu. Andererseits macht `rstrip()` nicht das gleiche wie `chomp()` also ist so ein Name vielleicht etwas irreführend.
@abgdf: `rstrip()` macht das was in der Doku steht, wenn Du die gelesen hast und etwas anderes erwartest, ist wohl Deine Erwartung falsch.
Deine `chomp()`-Funktion ist kein Hack, sondern eine Implementierung der Funktion, die Du haben möchtest.
Ist aber noch ein wenig Verbesserungswürdig. Den Längentest würde ich weg lassen, der ist mit `str.endswith()` doch schon abgedeckt. Und die Längen brauchst Du nicht voneinander abziehen, ``-len(b)`` reicht aus.
Und wenn Du das ganze zusätzlich unter dem Namen `rstrip2` verfügbar machen willst, dann spar Dir die extra Funktion und weise einfach das bereits vorhandene Funktionsobjekt zu. Andererseits macht `rstrip()` nicht das gleiche wie `chomp()` also ist so ein Name vielleicht etwas irreführend.
@BlackJack: Ok, meine Funktionen sind natürlich immer nur so gut wie mein Wissensstand. Und der kann sicher immer verbessert werden .
Aber immerhin bin ich nicht der einzige, der über ".rstrip()" gestolpert ist:
http://mail.python.org/pipermail/python ... 31408.html
Viele Grüße
Aber immerhin bin ich nicht der einzige, der über ".rstrip()" gestolpert ist:
http://mail.python.org/pipermail/python ... 31408.html
Viele Grüße
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Ja, das wird oft falsch angenommen. Die Doku hat allerdings inzwischen eine dicke Warnung und Bespiele dazu.