Skip to main content
 首页 » 编程设计

python之交换名字和姓氏位置

2025年05月04日16mfryf

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

基本上,我必须编写一个正文来将字符串中的名字位置交换到姓氏位置。

初始顺序是名字后跟姓氏(以逗号分隔)。 示例:'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'