如何在python中删除字符串的最后一个字符? [重复]

问题描述 投票:10回答:8

这个问题在这里已有答案:

我有一个文件路径作为字符串,并尝试从末尾删除最后一个'/'。

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

我一直在试用正则表达式,但它只是继续删除所有'/'。有没有更简单的方法来删除没有正则表达式的最后一个字符?

python regex string
8个回答
12
投票

如你所说,你不需要使用正则表达式。你可以使用rstrip

my_file_path = my_file_path.rstrip('/')

如果最后有一个以上的/,这将删除所有这些,例如'/file.jpg//' - > '/file.jpg'。从你的问题,我认为这没关系。


9
投票

最简单的是

正如@greggo指出的那样

string="mystring";
string[:-1]

2
投票

你可以使用String.rstrip

result = string.rstrip('/')

2
投票

对于路径,请使用os.path.abspath

import os    
print os.path.abspath(my_file_path)

1
投票

最简单的方法是使用切片。如果x是你的字符串变量,那么x [: - 1]将返回没有最后一个字符的字符串变量。 (BTW,x [-1]是字符串变量中的最后一个字符)您正在寻找

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


0
投票

要删除最后一个字符,只需使用切片:my_file_path[:-1]。如果您只想删除一组特定字符,请使用my_file_path.rstrip('/')。如果您将字符串视为文件路径,则操作为os.path.dirname。如果路径实际上是一个文件名,我宁愿想知道首先从哪里获得额外的斜杠。


0
投票

没有必要使用昂贵的regex,如果勉强需要然后尝试 - 使用r'(/)(?=$)'模式捕获最后/并替换为r''即空白字符。

>>>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
投票

回答这个问题:删除最后一个字符,只需使用:string = string[:-1]

如果你想删除最后一个'\'(如果有的话)(或者如果有多个):

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

如果它是路径,那么使用os.path函数:

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

虽然我会在最后添加一个斜杠,以防止在原始字符串末尾没有斜杠的情况下丢失文件名:

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

当使用abspath时,(如果路径不是绝对的,我猜),将当前工作目录添加到路径中。

os.path.abspath(dir)
© www.soinside.com 2019 - 2024. All rights reserved.