交换名字和姓氏位置

时间:2014-03-22 03:00:55

标签: python python-3.x

我需要一些帮助来编写这个函数的主体来交换姓氏和名字的位置。

基本上,我必须写一个主体来将字符串中的第一个名称交换到姓氏的位置。

初始订单是名字后跟姓氏(以逗号分隔)。 示例:'Albus Percival Wulfric Brian, Dumbledore'

我想要的结果是:'Dumbledore, Albus Percival Wulfric Brian'

但是我尝试了以下内容,但我仍然没有得到正确答案:

temp = name_list[len(name_list)-1]
name_list[len(name_list)-1] = name_list[0] 
name_list[0] = temp

结果是一个列表,这不是我想要的。我是Python的新用户,所以请不要过于复杂地解决这个问题。

2 个答案:

答案 0 :(得分:2)

你可以通过用逗号分割字符串来做到这一点 - 它产生一个列表 - 然后反转该列表,再次用逗号连接列表以获取字符串:

>>> name = 'Albus Percival Wulfric Brian, Dumbledore'
>>> ', '.join(reversed(name.split(', ')))
'Dumbledore, Albus Percival Wulfric Brian'

如果你不能使用reversed function(无论出于何种原因),那么你可以先通过单独存储列表元素来手动进行逆转。

>>> name.split(', ')
['Albus Percival Wulfric Brian', 'Dumbledore']
>>> first, last = name.split(', ')
>>> first
'Albus Percival Wulfric Brian'
>>> last
'Dumbledore'
>>> [last, first]
['Dumbledore', 'Albus Percival Wulfric Brian']
>>> ', '.join([last, first])
'Dumbledore, Albus Percival Wulfric Brian'
>>> last + ', ' + first
'Dumbledore, Albus Percival Wulfric Brian'

由于理论上字符串可能包含多个逗号,因此您应该考虑将1作为第二个参数传递给str.split,以确保只执行一次拆分,生成两个列表项: / p>

>>> 'some, name, with, way, too, many, commas'.split(', ', 1)
['some', 'name, with, way, too, many, commas']

您也可以在字符串中找到逗号并自行拆分字符串,而不是使用str.split。您可以使用str.find获取逗号的索引,然后使用sequence splicing拆分字符串:

>>> name.index(',')
28
>>> name[:28] # string up to index 28
'Albus Percival Wulfric Brian'
>>> name[30:] # string starting at index 30 (we have to consider the space too)
'Dumbledore'
>>> index = name.index(',')
>>> name[index + 2:] + ', ' + name[:index]
'Dumbledore, Albus Percival Wulfric Brian'

答案 1 :(得分:1)

这个

你不需要很多内置函数
return name[name.find(',')+2:]+", "+name[:name.find(',')]