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

时间:2014-07-27 23:01:01

标签: python regex string substring

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

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

5 个答案:

答案 0 :(得分:20)

请改用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

答案 1 :(得分:5)

你也可以这样做 -

str_mine = 'folder1/folder2/folder3/new_folder/image.jpg'    
print str_mine.split('/')[-1]

>> image.png

答案 2 :(得分:2)

你可以在最后一次出现时进行拆分

my_string='folder1/folder2/folder3/new_folder/image2.png'
print(my_string.rsplit("/",1)[1])
output:-
image2.png

答案 3 :(得分:1)

      import re
      pattern=re.compile(r"(.*?)/([a-zA-Z0-9]+?\.\w+)")
      y=pattern.match(x).groups()
      print y[1]

没有长度限制。

答案 4 :(得分:1)

您不需要花哨的东西,只需查看 the string methods in the standard library,您就可以轻松地在“文件名”部分和路径之间拆分字符串:

my_string='folder1/folder2/folder3/new_folder/image2.png'

print(my_string.rsplit('/', 1))
print(my_string.rsplit('/', 1)[-1])

输出:

['folder1/folder2/folder3/new_folder', 'image2.png']
image2.png

Ref