根据条件切片网址列表

时间:2019-07-24 13:52:01

标签: python

我有这样的网址列表:

 '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]) +'/'

4 个答案:

答案 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