我需要一些帮助来编写这个函数的主体来交换姓氏和名字的位置。
基本上,我必须写一个主体来将字符串中的第一个名称交换到姓氏的位置。
初始订单是名字后跟姓氏(以逗号分隔)。
示例:'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的新用户,所以请不要过于复杂地解决这个问题。
答案 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(',')]