我有两个URL列表。
第一个列表包含例如4个站点地图:
u1 = ['www.sample.de/tx/sitemap',
'www.sample.de/foto/sitemap',
'www.sample.de/er/sitemap',
'www.far.de/sitemap',
]
第二个列表包含在不同站点地图上建立索引的链接(数千个链接):
u2 = ['www.sample.de/tx/xxx',
'www.sample.de/tx/xxx',
'www.sample.de/foto/xxx',
'www.sample.de/foto/xxx',
'www.sample.de/er/xxx',
'www.sample.de/er/xxx',
'www.far.de/xxx',
'www.far.de/xxx',
]
现在,我想将这两个列表合并为一个元组列表。因此,我知道哪个链接来自哪个站点地图。
u3 = [('www.sample.de/tx/xxx', 'www.sample.de/tx/sitemap'),
('www.sample.de/tx/xxx', 'www.sample.de/tx/sitemap'),
('www.sample.de/foto/xxx', 'www.sample.de/foto/sitemap'),
('www.sample.de/foto/xxx', 'www.sample.de/foto/sitemap'),
('www.sample.de/er/xxx', 'www.sample.de/er/sitemap'),
('www.sample.de/er/xxx', 'www.sample.de/er/sitemap'),
('www.far.de/xxx', 'www.far.de/sitemap'),
('www.far.de/xxx, www.far.de/sitemap'),
]
我试图通过if条件合并它们,但这没有用。
如何正确执行此操作?
答案 0 :(得分:2)
您可以通过删除/
中最后u2
之后的所有内容并从u1
中获取包含该字符串的字符串来检查是否存在部分匹配
u3 = [(url2, url1) for url2 in u2 for url1 in u1 if url2.rsplit('/', 1)[0] in url1]
答案 1 :(得分:1)
def merge(list1, list2):
merged_list = [(p1, p2) for idx1, p1 in enumerate(list1)
for idx2, p2 in enumerate(list2) if idx1 == idx2]
return merged_list
if(condition):
merge(u1,u2)
在qoutes中使列表语法正确,如下所示,并将if中的条件替换为要检查的内容
u1 = ["www.sample.de/tx/sitemap",
"www.sample.de/foto/sitemap",
"www.sample.de/er/sitemap",
"www.far.de/sitemap",
]
答案 2 :(得分:1)
这是一种将u1
转换为字典以方便查找的方法。
u1 = ["www.sample.de/tx/sitemap",
"www.sample.de/foto/sitemap",
"www.sample.de/er/sitemap",
"www.far.de/sitemap",
]
u2 = ["www.sample.de/tx/xxx",
"www.sample.de/tx/xxx",
"www.sample.de/foto/xxx",
"www.sample.de/foto/xxx",
"www.sample.de/er/xxx",
"www.sample.de/er/xxx",
"www.far.de/xxx",
"www.far.de/xxx"
]
u1 = {i.replace("/sitemap", ""): i for i in u1}
result = [(i,u1.get("/".join(i.split("/", 2)[:2]), i)) for i in u2]
print(result)
输出:
[('www.sample.de/tx/xxx', 'www.sample.de/tx/sitemap'),
('www.sample.de/tx/xxx', 'www.sample.de/tx/sitemap'),
('www.sample.de/foto/xxx', 'www.sample.de/foto/sitemap'),
('www.sample.de/foto/xxx', 'www.sample.de/foto/sitemap'),
('www.sample.de/er/xxx', 'www.sample.de/er/sitemap'),
('www.sample.de/er/xxx', 'www.sample.de/er/sitemap'),
('www.far.de/xxx', 'www.far.de/xxx'),
('www.far.de/xxx', 'www.far.de/xxx')]