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

python nested list and string trimming in a for statement

现在,有一个包含 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]]