我在使用Python创建此程序时遇到问题。我希望它将名字缩写为小写,并将姓氏缩写为小写,但是使用大写' N'。我也试图将第一个名字中的字符数添加到年份。
示例:因此,当用户输入(" Lynn NOLAN 1994")时,Python应该返回," lynnNolan1998"
到目前为止,我有:
def findName(s):
index = s.find(" ")
lowerFirst = s[ :index].lower()
capitalizedLast = s[index+1:index-1].capitalize()
year = s[index+1: ].strip()
num = year + len(lowerFirst)
return lowerFirst + capitalizedLast + num
我可能会离开,但我对Python很新。如果我能得到有关如何解决这个问题的任何提示,那就太棒了!
答案 0 :(得分:2)
Python有很多有用的字符串方法可以帮助解决这类问题:
In [1]: s = 'Lynn NOLAN 1994'
In [2]: f = s.split()
In [3]: f[0].lower() + f[1].title() + str(int(f[2])+len(f[0]))
Out[3]: 'lynnNolan1998'
答案 1 :(得分:1)
使用re.sub()
和savings groups只是另一种解决方案:
In [1]: import re
In [2]: s = "Lynn NOLAN 1994"
In [3]: def replacement(x):
...: group1, group2, group3 = x.groups()
...: return group1.lower() + group2.capitalize() + str(int(group3) + len(group1))
...:
In [4]: re.sub(r"(.*?) (.*?) (\d{4})", replacement, s)
Out[4]: 'lynnNolan1998'
请注意,在当前状态下,此解决方案缺少错误处理。
答案 2 :(得分:0)
没有正则表达式:
>s = "Lynn NOLAN 1994"
>split_list = s.split()
>split_list[0].lower() + split_list[1].capitalize() + str(int(split_list[2]) + len(split_list[0]))
'lynnNolan1998'