查找字符后的最后一个子字符串

新手上路,请多包涵

我知道如何找到子字符串的很多方法:从开始索引到结束索引,字符之间等,但我有一个我不知道如何解决的问题:我有一个字符串,例如路径: folder1/folder2/folder3/new_folder/image.jpg 第二条路径: folder1/folder2/folder3/folder4/image2.png

从这个路径我只想采取最后的部分: image.jpgimage2.png 。如果我不知道子字符串何时开始(我不知道索引,但我可以假设它将在最后一个 / 字符之后),如果一个字符重复多次( / )和扩展名不同( .jpg.png 甚至其他)?

原文由 Ziva 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
1 个回答

使用 os.path.basename() 代替,不用担心细节。

os.path.basename() 返回路径的文件名部分:

 >>> import os.path
>>> os.path.basename('folder1/folder2/folder3/new_folder/image.jpg')
'image.jpg'

对于更通用的字符串拆分问题,您可以使用 str.rpartition() 根据给定的字符序列 从末尾 开始拆分字符串:

 >>> 'foo:bar:baz'.rpartition(':')
('foo:bar', ':', 'baz')
>>> 'foo:bar:baz'.rpartition(':')[-1]
'baz'

并使用 str.rsplit() 你可以多次拆分到一个限制,再次从最后开始:

 >>> 'foo:bar:baz:spam:eggs'.rsplit(':', 3)
['foo:bar', 'baz', 'spam', 'eggs']

最后但同样重要的是,您可以使用 str.rfind() 来查找子字符串的索引,从末尾开始搜索:

 >>> 'foo:bar:baz'.rfind(':')
7

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题