我有一个人名列表,我想提取头衔和姓氏。我写了以下代码:
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
for i in person:
title = [i.split(' ')[0] for i in person]
lname = [i.split(' ')[-1] for i in person]
return (title + lname)我得到的输出是:
['Dr.',
'Dr.',
'Dr.',
'Dr.',
'Brooks',
'Collins-Thompson',
'Vydiswaran',
'Romero']我想要的结果是这样的:
['Dr.Brooks' , 'Dr.Collins-Thompson' ...]发布于 2019-04-12 10:01:34
title包含所有名字的列表,lname包含所有姓氏的los,看起来您需要一个zip操作
print("Zip:")
for x, y in zip(a, b):
print(x, y)发布于 2019-04-12 10:04:07
而不是两个单独的列表,只需一次完成所有操作:
names = [i.split(' ')[0] + i.split(' ')[-1] for i in people] 这样做的方法是,您尝试将两个列表添加到一起-您想要的是在创建列表时将这两个字符串添加到一起。如上所述,您可以在一行中完成所有这些操作--外部for循环甚至不是必需的。
发布于 2019-04-12 10:04:24
看起来你只需要拆分一个理解,然后在另一个理解中拔出第一个和最后一个:
people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
[n[0]+n[-1] for n in [p.split(' ') for p in people]]
>>> ['Dr.Brooks', 'Dr.Collins-Thompson', 'Dr.Vydiswaran', 'Dr.Romero']您也可以使用正则表达式进行拆分,尽管这样做可能有些夸张:
import re
regex = re.compile("\s.+\s")
[''.join(regex.split(s)) for s in people]
>>> ['Dr.Brooks', 'Dr.Collins-Thompson', 'Dr.Vydiswaran', 'Dr.Romero']https://stackoverflow.com/questions/55643394
复制相似问题