首页 > 解决方案 > 在多词字符串列表中,提取第二个词

问题描述

我有一个字符串列表。我想提取每个字符串中的第二个单词并将其保存到一个新列表中。有些元素只有一个词。

l = ["OPTY PLN EXTRCT","MRKT COMMUNITY TABLE", "COMM", "EXT OPTY EMP"] 

期望的输出:

output = ['PLN', 'COMMUNITY', 'OPTY']

列表理解可以提取第一个单词。

[i.split()[0] for i in l] 

下面的代码会引发索引错误,因为列表中的元素只有一个单词。

[i.split()[1] for i in l]

如果元素只有一个单词,我希望迭代跳过它并继续。我正在玩一个 Try 和 except 但没有成功让它工作。

标签: pythonstringlistsplitlist-comprehension

解决方案


您可以将 if 条件添加到您的理解中,... if len(i.split()) > 1]但是这需要您将单词拆分两次,这里我们对l使用的每个元素执行一次map()

l = ["OPTY PLN EXTRCT","MRKT COMMUNITY TABLE", "COMM", "EXT OPTY EMP"]

output = [words[1] for words in map(str.split, l) if len(words) > 1]

输出:

['PLN', 'COMMUNITY', 'OPTY']

或者,如果您使用的是 python3.8,我们可以使用新的:=表示法。

output = [words[1] for i in l if len(words := i.split()) > 1]

推荐阅读