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

标签 python regex string substring

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

从这条路径我只想获取最后的部分:image.jpgimage2.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/

相关文章:

python - 在 Ubuntu 中使用 python 而不是 python3 运行

python - 模块未找到错误 : No module named 'base58'

c# - 从完整路径中排除基目录(以及文件名)

c++ - 使用文本处理文件

python - Elasticsearch查询词条搜索,如何用_source完成?

objective-c - iOS 正则表达式 : Unknown escape sequence "\|"

c# - 为什么以下正则表达式与此文本匹配?

java - 如何通过在java中传递相对路径来获取文件?

c - 将字符串添加到 C 中给定的命令行参数

python - 是否可以为列表框小部件中的特定项目着色?