it-swarm.com.de

Wie kann ich das letzte Zeichen einer Zeichenfolge in Python entfernen?

Ich habe einen Dateipfad als Zeichenfolge und versuche, das letzte '/' vom Ende zu entfernen.

my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'

Ich habe es mit Regex ausprobiert, aber es entfernt ständig alle '/'. Gibt es eine einfachere Möglichkeit, das letzte Zeichen ohne Regex zu entfernen?

10
user5460786

Wie Sie sagen, brauchen Sie dafür keine Regex. Sie können rstrip verwenden.

my_file_path = my_file_path.rstrip('/')

Wenn am Ende mehr als ein / vorhanden ist, werden alle, z. '/file.jpg//' -> '/file.jpg'. Aus Ihrer Frage gehe ich davon aus, dass das in Ordnung wäre.

12
Alasdair

Das einfachste ist

wie @greggo darauf hinwies

string="mystring";
string[:-1]
8
sarath joseph

Sie könnten String.rstrip verwenden.

result = string.rstrip('/')
2
joksnet

Für einen Pfad verwenden Sie os.path.abspath 

import os    
print os.path.abspath(my_file_path)
2
djangoliv

Der einfachste Weg ist die Verwendung von slice . Wenn x Ihre Stringvariable ist, gibt x [: - 1] die Stringvariable ohne das letzte Zeichen ..__ zurück. (BTW, x [-1] ist das letzte Zeichen in die String-Variable) .__ Sie suchen

my_file_path = '/ home/ro/A_Python_Scripts/flask-auto/meinVerzeichnis/scarlett Johanson/1448543562.17.jpg /' Mein_Dateipfad = Mein_Dateipfad [: - 1]

1
SteveOwens

Es ist nicht nötig, die teure Variable regex zu verwenden. Wenn Sie es kaum brauchen, versuchen Sie - Verwenden Sie das Muster r'(/)(?=$)', das zuletzt / erfasst wird, und ersetzen Sie es mit r'', d.

>>>re.sub(r'(/)(?=$)',r'','/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/')
>>>'/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg'
0
SIslam

Beantwortung der Frage: Um das letzte Zeichen zu entfernen, verwenden Sie einfach: string = string[:-1].

Wenn Sie das letzte '\' entfernen möchten, falls eines (oder mehrere) vorhanden sind:

while string[-1]=='\\':
    string = string[:-1]

Wenn es sich um einen Pfad handelt, verwenden Sie die os.path-Funktionen:

dir = "dir1\\dir2\\file.jpg\\"   #I'm using windows by the way
os.path.dirname(dir)

obwohl ich am Ende einen Schrägstrich hinzufügen würde, um den Dateinamen nicht zu verpassen, falls am Ende der ursprünglichen Zeichenfolge kein Schrägstrich steht:

dir = "dir1\\dir2\\file.jpg"
os.path.dirname(dir + "\\")

Wenn Sie abspath verwenden (wenn der Pfad nicht absolut ist, denke ich), wird das aktuelle Arbeitsverzeichnis zum Pfad hinzugefügt.

os.path.abspath(dir)
0
tglaria

Um das letzte Zeichen zu entfernen, verwenden Sie einfach ein Slice: my_file_path[:-1]. Wenn Sie nur einen bestimmten Zeichensatz entfernen möchten, verwenden Sie my_file_path.rstrip('/'). Wenn Sie die Zeichenfolge als Dateipfad sehen, lautet die Operation os.path.dirname . Wenn der Pfad tatsächlich ein Dateiname ist, frage ich mich eher, woher der zusätzliche Schrägstrich stammt. 

0
Yann Vernier