在Python中最后一次出现字符串后获取子字符串

时间:2018-06-05 13:56:08

标签: python

我有一个字符串:

test = "/home/myself/Downloads/example.py"

我希望在/的最后一次出现后获取文本,即example.py。我尝试使用split:

test.split("/")[0]

但问题是它会返回带有固定索引的字符串,我通常不会这样做。

如何在最后一次出现/?

后获取字符串

5 个答案:

答案 0 :(得分:2)

您可以使用str.split并获取索引-1,这是列表的最后一个元素。

test = "/home/myself/Downloads/example.py"
print(test.split("/")[-1]) # 'example.py'

虽然在恢复文件名的特定情况下,Ev. Kounis的答案显示了最佳方法。

您可以让os为您执行此操作:

import os
test = "/home/myself/Downloads/example.py"
os.path.basename(test)  # -> example.py

答案 1 :(得分:2)

您可以让os为您执行此操作:

import os
test = "/home/myself/Downloads/example.py"
os.path.basename(test)  # -> example.py

答案 2 :(得分:1)

尝试使用

test.split("/")[-1]

负数索引在python中的列表中向后移动,因此这将访问最后一个元素

答案 3 :(得分:1)

您可以使用pop方法。

print(test.split("/").pop())

pop方法比slicing快。

import timeit
t1 = timeit.Timer('test = "/home/myself/Downloads/example.py";test.split("/").pop()')
t2 = timeit.Timer('test = "/home/myself/Downloads/example.py";test.split("/")[-1]')

输出

t1 = 9.307525000622263e-07
t2 = 8.126347900179098e-06

答案 4 :(得分:0)

如果你的字符串是路径,你也可以使用pathlib

来操作它们
p = Path("/home/myself/Downloads/example.py")
print(p.parts[-1])
# example.py