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