从python中的名称列表中获取首字母

时间:2015-02-25 02:57:24

标签: python list slice

names=(input("Enter full names sperated by commas: "))
initials=list(names)

我想抓住每个名字的第一个和第二个首字母。名字和姓氏用空格分隔。下一个名字用逗号隔开。

2 个答案:

答案 0 :(得分:0)

您可以使用re模块。

>>> name = input('Enter full names seperated by commas: ')
Enter full names seperated by commas: Randall Alexander, Tony Leclerc, RoxAnn Stalvey, Walter Pharr
>>> [x+y for (x,y) in re.findall(r'(?:^|,)\s*([A-Z])\w+\s+([A-Z])\w+', name)]
['RA', 'TL', 'RS', 'WP']

上面的正则表达式捕获每个单词的第一个字母。由于我们使用了两个捕获组,因此re.findall函数的返回类型必须是元组列表。将列表理解中的每个元组元素连接起来将为您提供所需的输出。

答案 1 :(得分:0)

如果你不喜欢正则表达式,可以做类似的事情:

>>> ii=[]
>>> s = raw_input('--> ')
--> Ronald Reagan, George Bush, Bill Clinton, George Walker Bush, Barrack Hussein Obama
>>> for pres in map(lambda i:i.split(),map(lambda p:p.strip(), s.split(','))):
...    ii.append(map( lambda p:p[0], pres ))
...
>>> map(lambda l:'.'.join(l),ii)
['R.R', 'G.B', 'B.C', 'G.W.B', 'B.H.O']
>>> for initials in  map(lambda l:'.'.join(l),ii):
...    print initials
...
R.R
G.B
B.C
G.W.B
B.H.O