我有这样的网址列表:
'https://www.journaldunet.com/magazine/mentions-legales.shtml',
'https://www.lemonde.fr/big-browser/article',
'https://www.lemonde.fr/planete/index.html',
'https://www.lemonde.fr/les-decodeurs/live',
我想编写一个函数,该函数可以返回根据条件分割的url:如果url的结尾以article或html或php结束
所以所需的结果将是这样的:
'https://www.journaldunet.com/magazine/,
'https://www.lemonde.fr/big-browser/,
'https://www.lemonde.fr/planete/,
'https://www.lemonde.fr/les-decodeurs/live',
我已经尝试过这段代码,但是它一直在给我IndentationError
url = 'http://example.com/random/folder/path.html'
lis = url.split('/')
for item in lis:
if item[-1] =="article" or item.endswith(html,php):
url ='/'.join(slashparts[:-1]) +'/'
答案 0 :(得分:1)
您可以尝试:
>>> a = "https://www.journaldunet.com/magazine/mentions-legales.shtml"
>>> a.rsplit('/', 1)
['https://www.journaldunet.com/magazine', 'mentions-legales.shtml']
简而言之:
>>> url_list = ['https://www.journaldunet.com/magazine/mentions-legales.shtml',
... 'https://www.lemonde.fr/big-browser/article',
... 'https://www.lemonde.fr/planete/index.html',
... 'https://www.lemonde.fr/les-decodeurs/live']
>>> parse_list = []
>>> for single_url in url_list:
... parse_list.append(single_url.rsplit('/', 1)[0])
...
>>> print(parse_list)
['https://www.journaldunet.com/magazine', 'https://www.lemonde.fr/big-browser', 'https://www.lemonde.fr/planete', 'https://www.lemonde.fr/les-decodeurs']
答案 1 :(得分:1)
这应该有效:
ls = [
"https://www.journaldunet.com/magazine/mentions-legales.shtml",
"https://www.lemonde.fr/big-browser/article",
"https://www.lemonde.fr/planete/index.html",
"https://www.lemonde.fr/les-decodeurs/live",
]
newls = []
for url in ls:
if url.endswith("html") or url.endswith("php") or url.endswith("article"):
newls.append(url.rsplit("/", 1)[0])
else:
newls.append(url)
print(newls)
答案 2 :(得分:0)
您可以使用正则表达式,如果需要,可以更轻松地更新它:
re.sub(r'/[^/]*?(article|html|php)$', '/', some_url)
您可以通过添加\.php
或\.\w?html
答案 3 :(得分:0)
您可以尝试提取扩展名:
last_index = url.rfind(".")
sep = [url[:last_index], [url[last_index:]]]
然后,如果URL具有正确的扩展名(也许带有filter
),则仅保留该URL