我知道如何找到子字符串的很多方法:从开始索引到结束索引,字符之间等,但我有一个问题我不知道如何解决:
我有一个字符串,例如路径:folder1/folder2/folder3/new_folder/image.jpg
第二个路径:folder1/folder2/folder3/folder4/image2.png
从这条路径我只想获取最后的部分:image.jpg
和 image2.png
。如果我不知道它何时开始(我不知道索引,但我可以假设它将在最后一个 /
字符之后),如果多次出现一个字符,我怎么能取一个子字符串重复 (/
) 并且扩展名不同(.jpg
和 .png
甚至其他)?
最佳答案
使用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
关于python - 查找字符后的最后一个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986504/