从列表中的每个值中提取第一个单词

时间:2018-07-12 21:03:45

标签: python string list split

因此,我有很长的列标题列表。都是字符串,有些是几个字长。我还没有找到一种写函数的方法,该函数从列表中的每个值中提取第一个单词,然后返回仅包含这些单数单词的列表。

例如,这就是我的列表:

['Customer ID', 'Email','Topwater -https:', 'Plastics - some uml']

我希望它看起来像:

['Customer', 'Email', 'Topwater', 'Plastics']

我目前有这个:

def first_word(cur_list):
    my_list = []
    for word in cur_list:
        my_list.append(word.split(' ')[:1])

,当我在列表上运行它时,它返回None

5 个答案:

答案 0 :(得分:4)

在将字符串按空格分割后,您可以使用列表推导来返回第一个索引的列表。

my_list = [x.split()[0] for x in your_list]

答案 1 :(得分:1)

要解决“在列表上运行它时,它返回None的问题。”

您没有返回my_list。因为它创建了一个新列表,所以没有更改原始列表cur_list,因此不会返回my_list

要从列表中的每个值中提取第一个单词

从@dfundako,您可以将其简化为

  • my_list = [x.split()[0] for x in cur_list]

最终代码为

def first_word(cur_list):
    my_list = [x.split()[0] for x in cur_list]
    return my_list

这里是一个演示。请注意,某些标点符号可能会遗留下来,尤其是在名称的最后一个字母之后:

  • names = ["OMG FOO BAR", "A B C", "Python Strings", "Plastics: some uml"]
  • first_word(names)将是['OMG', 'A', 'Python', 'Plastics:']

答案 2 :(得分:0)

[column.split(' ')[0] for column in my_list]应该可以解决问题。

,如果要在函数中使用它:

def first_word(my_list):
    return [column.split(' ')[0] for column in my_list]

答案 3 :(得分:0)

>>> l = ['Customer ID', 'Email','Topwater -https://karls.azureedge.net/media/catalog/product/cache/1/image/627x470/9df78eab33525d08d6e5fb8d27136e95/f/g/fgh55t502_web.jpg', 'Plastics - https://www.bass.co.za/1473-thickbox_default/berkley-powerbait-10-power-worm-black-blue-fleck.jpg']
>>> list(next(zip(*map(str.split, l))))
['Customer', 'Email', 'Topwater', 'Plastics']

答案 4 :(得分:0)

(?<=\d\d\d)\d*尝试在循环中使用它来使用正则表达式提取单词