这个问题在这里已有答案:
我有一个文件路径作为字符串,并尝试从末尾删除最后一个'/'。
my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'
我一直在试用正则表达式,但它只是继续删除所有'/'。有没有更简单的方法来删除没有正则表达式的最后一个字符?
如你所说,你不需要使用正则表达式。你可以使用rstrip
。
my_file_path = my_file_path.rstrip('/')
如果最后有一个以上的/
,这将删除所有这些,例如'/file.jpg//'
- > '/file.jpg'
。从你的问题,我认为这没关系。
最简单的是
正如@greggo指出的那样
string="mystring";
string[:-1]
你可以使用String.rstrip
。
result = string.rstrip('/')
对于路径,请使用os.path.abspath
import os
print os.path.abspath(my_file_path)
最简单的方法是使用切片。如果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]
要删除最后一个字符,只需使用切片:my_file_path[:-1]
。如果您只想删除一组特定字符,请使用my_file_path.rstrip('/')
。如果您将字符串视为文件路径,则操作为os.path.dirname。如果路径实际上是一个文件名,我宁愿想知道首先从哪里获得额外的斜杠。
没有必要使用昂贵的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'
回答这个问题:删除最后一个字符,只需使用: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)