Gibt es eine Funktion zum Chomp des letzten Zeichens in der Zeichenfolge, wenn es sich um ein Sonderzeichen handelt? Zum Beispiel muss ich Backslash entfernen, wenn es da ist, und nichts tun, wenn nicht. Ich weiß, dass ich es mit Regex leicht machen kann, aber ich frage mich, ob es dafür so etwas wie eine kleine eingebaute Funktion gibt.
77
Antworten:
Verwenden Sie
rstrip
diese Option, um die angegebenen Zeichen von der rechten Seite der Zeichenfolge zu entfernen.my_string = my_string.rstrip('\\')
Siehe: http://docs.python.org/library/stdtypes.html#str.rstrip
quelle
Wenn es Ihnen nichts ausmacht, alle nachfolgenden Backslashes zu entfernen, können Sie verwenden
string.rstrip()
Zum Beispiel:
x = '\\abc\\' print x.rstrip('\\')
Drucke:
Es gibt jedoch ein kleines Problem (basierend darauf, wie Ihre Frage formuliert ist): Dadurch werden ALLE nachfolgenden Backslashes entfernt. Wenn Sie wirklich nur möchten, dass der LETZTE Charakter entfernt wird, können Sie Folgendes tun:
if x[-1] == '\\': x = x[:-1]
quelle
Wenn Sie bei mehreren nur einen Backslash entfernen möchten , gehen Sie wie folgt vor:
s = s[:-1] if s.endswith('\\') else s
quelle
if s.endswith('\\'): s = s[:-1]
quelle
if s.endswith('\\')
Die Funktion rstrip entfernt jedoch mehr als nur das letzte Zeichen. Es werden alle Backslashes am Ende der Zeichenfolge entfernt. Hier ist eine einfache if-Anweisung, mit der nur das letzte Zeichen entfernt wird:
if s[-1] == '\\': s = s[:-1]
quelle
Oder nicht so schön (schlag mich nicht), funktioniert aber auch:
stripSlash = lambda strVal: strVal[:-1] if strVal.endswith('\\') else strVal stripSlash('sample string with slash\\')
Und ja - Streifen ist besser. Ich will es nur versuchen.
quelle
Wir können die eingebaute Funktion ersetzen verwenden
my_str.replace (my_char, '')
my_chars = '\\' my_str = my_str.replace(my_char,'')
Dies ersetzt alle \ in my_str
my_str.replace (my_chars, '', i)
my_char = '\\' my_str = 'AB\CD\EF\GH\IJ\KL' print ("Original my_str : "+ my_str) for i in range(8): print ("Replace '\\' %s times" %(i)) print(" Result : "+my_str.replace(my_chars, '',i))
Dies wird \ in my_str i- mal ersetzen. Jetzt können Sie steuern, wie oft Sie es durch i ersetzen möchten
Ausgabe:
Original my_str : AB\CD\EF\GH\IJ\KL Replace '\' 0 times Result : AB\CD\EF\GH\IJ\KL Replace '\' 1 times Result : ABCD\EF\GH\IJ\KL Replace '\' 2 times Result : ABCDEF\GH\IJ\KL Replace '\' 3 times Result : ABCDEFGH\IJ\KL Replace '\' 4 times Result : ABCDEFGHIJ\KL Replace '\' 5 times Result : ABCDEFGHIJKL Replace '\' 6 times Result : ABCDEFGHIJKL Replace '\' 7 times Result : ABCDEFGHIJKL
quelle
Für C # Leute, die hier landen:
my_string = my_string.TrimEnd('\\');
quelle