【问题标题】:Getting initials out of a list of names in python从python中的名称列表中获取首字母
【发布时间】:2015-04-26 22:23:50
【问题描述】:
names=(input("Enter full names sperated by commas: "))
initials=list(names)

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

【问题讨论】:

  • 您是否尝试阅读 Python 文档?
  • 输入人名,以逗号分隔:Randall Alexander、Tony Leclerc、RoxAnn Stalvey、Walter Pharr 首字母为 RA TL RS WP。
  • 应该是这样的
  • 看看here。它在解释基本概念时特别有用。每个内置类型(如字符串、列表等)都有自己的页面,它们的大部分方法(函数)都显示在页面底部。对于您的示例,查找字符串的 split 方法。

标签: python list slice


【解决方案1】:

您可以使用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 函数的返回类型必须是元组列表。在列表推导中加入每个元组元素将为您提供所需的输出。

【讨论】:

    【解决方案2】:

    如果你不喜欢正则表达式,可以这样做:

    >>> 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多