python在for语句中嵌套了列表和字符串修剪



现在,拥有一个包含2个字符串的列表列表:

l1 = [['a', 'www.apple.com/a www.google.com www.yahoo.com'],
['b', 'www.apple.com/sm www.sashgh.com www.uensg.com'],
['c', 'www.apple.com/oths www.zhiut.com'],
['d', 'www.amazon.com www.toronto.com']]

我想保留第一个字符串,并在第二个字符串中获得"apple.com"url,或者如果没有"apple.com",则给出None(如"d"中的情况(:

l2 = [['a', 'www.apple.com/a'], 
['b', 'www.apple.com/sm'],
['c', 'www.apple.com/oths'],
['d', None]]

我试过这个:

l2 = []
for l in l1:
for url in l[1].split(' '):
if 'apple.com' in url:
l2.append([l[0], url])
break
else:
l2.append([l[0], None])
break

代码现在起作用了!

由于您只在子列表的第二个元素的拆分字符串中追加第一个apple.com,因此可以使用next和生成器表达式来提取第一个apple.coms。

out = [[first, next((s for s in second.split() if 'apple.com' in s), None)] for first, second in l1]

输出:

[['a', 'www.apple.com/a'],
['b', 'www.apple.com/sm'],
['c', 'www.apple.com/oths'],
['d', None]]

最新更新