我需要一些帮助来编写这个交换姓氏和名字位置的函数的主体。
基本上,我必须编写一个正文来将字符串中的名字位置交换到姓氏位置。
初始顺序是名字后跟姓氏(以逗号分隔)。 示例:'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 的新用户,所以请不要采用过于复杂的方法来解决这个问题。
请您参考如下方法:
您可以通过用逗号拆分字符串来实现这一点——这会产生一个列表——然后反转该列表,并再次用逗号连接列表以取回一个字符串:
>>> 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确保您只执行一次拆分,生成两个列表项:
>>> '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'
