【发布时间】:2023-01-07 00:01:16
【问题描述】:
我想在最后一次出现斜杠 (/) 之前获取完整的字符串路径
String : /d/d1/Projects/Alpha/tests
Output : /d/d1/Projects/Alpha
通过执行,我能够在最后一个斜杠之后获取字符串的最后一部分
String.split('/')[-1]
但我想得到"/d/d1/Projects/Alpha"
谢谢。
【问题讨论】:
标签: python
我想在最后一次出现斜杠 (/) 之前获取完整的字符串路径
String : /d/d1/Projects/Alpha/tests
Output : /d/d1/Projects/Alpha
通过执行,我能够在最后一个斜杠之后获取字符串的最后一部分
String.split('/')[-1]
但我想得到"/d/d1/Projects/Alpha"
谢谢。
【问题讨论】:
标签: python
最简单的选项是 str.rpartition,它将为您提供字符串的三元组,包括最右边出现的给定分隔符之前、包括和之后:
>>> String = "/d/d1/Projects/Alpha/tests"
>>> String.rpartition("/")[0]
'/d/d1/Projects/Alpha'
对于在给定文件路径的情况下查找目录名称的特定情况(看起来像这样),您可能还喜欢os.path.dirname:
>>> import os.path
>>> os.path.dirname(String)
'/d/d1/Projects/Alpha'
【讨论】:
os.path.dirname 是可行的方法,因为它与平台无关
dirname 是获取目录名称的最佳方式,但 OP 一般询问字符串并以文件路径为例,这与询问文件路径不同。 :) 这可能实际上不是本地文件路径,在这种情况下,os.path 可能不会做正确的事情。
String.rpartition("/")[0] + "/workspace"——或者再次,如果我们被允许假设这是一个本地文件路径,做os.path.join(os.path.dirname(String), "workspace")
两种简单的方法:使用拆分正如你所做的,你可以使用split方法,然后使用join,如下所示,它应该可以工作:
in_str = "/d/d1/Projects/Alpha/tests"
out_str = '/'.join(in_str.split('/')[:-1]) # Joining all elements except the last one
或者使用 os.path.dirname(会推荐,更清洁)
in_str = "/d/d1/Projects/Alpha/tests"
out_str = os.path.dirname(in_str)
两者都给出了期待的结果
【讨论】:
使用str.rfind函数:
s = '/d/d1/Projects/Alpha/tests'
print(s[:s.rfind('/')])
/d/d1/Projects/Alpha
【讨论】: