在最后一次前向斜杠之前删除部分字符串

fre*_*ev4 9 python regex string replace

我目前正在处理的程序从网站检索URL并将它们放入列表中.我想得到的是URL的最后一部分.

所以,如果我的URL列表中的第一个元素是"https://docs.python.org/3.4/tutorial/interpreter.html"我想要删除之前的所有内容"interpreter.html".

我可以使用函数,库或正则表达式来实现吗?我查看了其他Stack Overflow帖子,但解决方案似乎不起作用.

这是我的几次尝试中的两个:

for link in link_list:
   file_names.append(link.replace('/[^/]*$',''))
print(file_names)
Run Code Online (Sandbox Code Playgroud)

&

for link in link_list:
   file_names.append(link.rpartition('//')[-1])
print(file_names)
Run Code Online (Sandbox Code Playgroud)

Bha*_*Rao 23

看看str.rsplit.

>>> s = 'https://docs.python.org/3.4/tutorial/interpreter.html'
>>> s.rsplit('/',1)
['https://docs.python.org/3.4/tutorial', 'interpreter.html']
>>> s.rsplit('/',1)[1]
'interpreter.html'
Run Code Online (Sandbox Code Playgroud)

并使用RegEx

>>> re.search(r'(.*)/(.*)',s).group(2)
'interpreter.html'
Run Code Online (Sandbox Code Playgroud)

然后匹配位于/String 的最后和结尾之间的第二组.这是RegEx中贪婪技术的贪婪用法.

正则表达式可视化

Debuggex演示

小注 - link.rpartition('//')[-1]你的代码中的问题是你试图匹配//而不是/.所以删除额外/的内容link.rpartition('/')[-1].


daw*_*awg 9

您可以使用rpartition()

>>> s = 'https://docs.python.org/3.4/tutorial/interpreter.html'
>>> s.rpartition('/')
('https://docs.python.org/3.4/tutorial', '/', 'interpreter.html')
Run Code Online (Sandbox Code Playgroud)

并取返回的 3 元素元组的最后一部分:

>>> s.rpartition('/')[2]
'interpreter.html'
Run Code Online (Sandbox Code Playgroud)


Tig*_*kT3 7

这不需要正则表达式.

import os

for link in link_list:
    file_names.append(os.path.basename(link))
Run Code Online (Sandbox Code Playgroud)