Python 在多字字符串列表中,提取第二个字

Python 在多字字符串列表中,提取第二个字,python,string,list,split,list-comprehension,Python,String,List,Split,List Comprehension,我有一个字符串列表。我想提取每个字符串中的第二个单词,并将其保存到新列表中。有些元素只有一个单词 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

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

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]
如果元素只有一个单词,我希望迭代跳过它并继续。
我玩了一个尝试,但没有成功地得到它的工作

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

输出:

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

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

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

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

输出:

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

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

output = [words[1] for i in l if len(words := i.split()) > 1]
如果某个单词是空字符串,仅由空格组成,并且确实包含字符,但中间没有空格,则此操作将从列表中排除该单词。因此,您应该至少有两个单词用于拆分和提取。请注意,我的拆分解决方案会在第二个单词之后停止拆分,因此字符串中可能有很多单词,但是split()不会因为处理它们而浪费时间

如果某个单词是空字符串,仅由空格组成,并且确实包含字符,但中间没有空格,则此操作将从列表中排除该单词。因此,您应该至少有两个单词用于拆分和提取。请注意,我的拆分解决方案会在第二个单词之后停止拆分,因此字符串中可能有很多单词,但是split()不会因为处理它们而浪费时间