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

标签 python string list split list-comprehension

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

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

期望的输出:

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

List Comprehension 用于提取第一个单词。

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

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

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

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

最佳答案

您可以像 ... if len(i.split()) > 1] 这样在您的理解中添加 if 条件,但是这需要您将单词拆分两次,我们在这里使用 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]

关于python - 在多词字符串列表中,提取第二个词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59288858/

相关文章:

python - 如何将字符串拆分为标记?

python - 可以在内联注释中指定哪些 pylint 选项?

c++ - 连接和压缩 std::vector<std::string> 的最佳方法

python - 在 python 中转换列表的优雅且廉价的方法

java - 从不同地方调用时不能在方法参数中使用 List<Future<?>>

python - 根据import查找Django源码

python - Windows 10 上的最新蚊子未运行

java - 如何在 Java 中比较字符串?

C 将字符串映射到函数

list - 通过递归扩展 Prolog 目标?