我有一个文件路径作为字符串并尝试删除最后一个' /'从最后开始。
-1
我一直在试用正则表达式,但它只是不断删除所有' /'。有没有更简单的方法来删除没有正则表达式的最后一个字符?
答案 0 :(得分:12)
正如您所说,您不需要使用正则表达式。您可以使用rstrip
。
my_file_path = my_file_path.rstrip('/')
如果最后有多个/
,则会删除所有这些内容,例如'/file.jpg//'
- > '/file.jpg'
。从你的问题来看,我认为没问题。
答案 1 :(得分:9)
最简单的是
正如@greggo指出的那样
string="mystring";
string[:-1]
答案 2 :(得分:2)
您可以使用@Override
public void reload(ResourceConfig configuration) {
try {
new WebComponent(new WebServletConfig(this), configuration);
} catch (ServletException e) {
LOGGER.log(Level.SEVERE, "Reload failed", e);
List<ResourceModelIssue> resources = Collections.emptyList();
throw new ModelValidationException(e.getMessage(), resources);
}
super.reload(configuration);
}
。
String.rstrip
答案 3 :(得分:2)
对于路径,请使用os.path.abspath
import os
print os.path.abspath(my_file_path)
答案 4 :(得分:1)
最简单的方法是使用切片。 如果x是你的字符串变量,那么x [: - 1]将返回没有最后一个字符的字符串变量。 (BTW,x [-1]是字符串变量中的最后一个字符) 您正在寻找
my_file_path =&#39; / home / ro / A_Python_Scripts / flask-auto / myDirectory / scarlett Johanson / 1448543562.17.jpg /&#39; my_file_path = my_file_path [: - 1]
答案 5 :(得分:0)
要删除最后一个字符,只需使用切片:my_file_path[:-1]
。如果您只想删除一组特定字符,请使用my_file_path.rstrip('/')
。如果您将字符串视为文件路径,则操作为os.path.dirname。如果路径实际上是一个文件名,我宁愿想知道首先从哪里获得额外的斜杠。
答案 6 :(得分: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'
答案 7 :(得分: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)