因此,我有很长的列标题列表。都是字符串,有些是几个字长。我还没有找到一种写函数的方法,该函数从列表中的每个值中提取第一个单词,然后返回仅包含这些单数单词的列表。
例如,这就是我的列表:
['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
。
答案 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*
尝试在循环中使用它来使用正则表达式提取单词