首页 > 解决方案 > 如何为字符串中的每个元素提取第二个单词。(Python)

问题描述

更新:所以列表中的一些字符串只有一个单词长,这就是它抛出索引错误的原因。

我正在尝试提取每个元素中的第二个单词并将其保存到列表中。我IndexError: list index out of range在运行这个时得到了一个。

df_list = [isplit()[0] for i in df_list]可以提取第一个单词,但在 index=1 上运行相同的代码似乎不起作用。

    df_list = ['ACTVIVTY PLN CMD', 'ACTIVITY CUST COST', 'OPTY TWO ORG', 'ORG PLN ACTION', 'ACTIVITY', 'PLN ORG']

    df_list = [i.split()[1] for i in df_list]

标签: pythonstringlistsplitlist-comprehension

解决方案


如果你有一个只有一个单词的字符串,i.split()会给你一个长度为 1 的列表,然后尝试在位置 1(第 2 个项目)处获取项目会给你一个错误。

df_list = ['ACTVIVTY PLN CMD', 'ACTIVITY CUST COST', 'OPTY TWO ORG', 'ACTIVITY']

有多种方法可以检查这一点,例如:

df_list = [word for words in df_list for i, word in enumerate(words.split()) if i == 1]

或者:

df_list = [words.split()[1] for words in df_list if len(words.split()) > 1]

或者 yuou 也可以寻找分割单词的字符(通常是空格,但也可能是一些其他字符,如制表符等)。

在性能方面,第一个有第二个 for 循环,第二个对每个字符串有两次 split() 调用,第三个必须检查字符串是否存在这些字符,所以没有测试就没有明确的赢家。


推荐阅读