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

2024-10-08 19:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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]

如果元素只有一个单词,我希望迭代跳过它继续。 我正在尝试,但没有成功地得到它的工作。你知道吗


Tags: 字符串incommunity元素列表fortable单词
2条回答

你可以在你的理解中添加if条件,比如... if len(i.split()) > 1],但是这需要你将单词拆分两次,这里我们使用map()l的每个元素做一次。你知道吗

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]
words = [w.split(None, 3)[1] for w in l if any(x.isspace() for x in w.strip())]

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

相关问题 更多 >

    热门问题