Python:单词的逆序

时间:2018-07-18 15:33:52

标签: python string list

在我的程序中,我从另一个文件中提取一个字符串,并将其分配给变量(见下文)

ex1 = 'John Doe'

如何将上述字符串转换为如下所示的其他格式? (请注意逗号后的空格)

ex2 = 'Doe, John'

很抱歉,这个问题看似微不足道,但我对列表没有太多的经验,大多数解决方案都包含列表(因此我不完全理解它们)。

任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:5)

对于2个名称,可以将str.joinreversedstr.split结合使用:

ex1 = 'John Doe'
ex2 = ', '.join(reversed(ex1.split()))  # 'Doe, John'

您还可以通过匿名函数使用f字符串(Python 3.6及更高版本):

ex2 = (lambda x: f'{x[1]}, {x[0]}')(ex1.split())  # 'Doe, John'

不清楚您想为多个名称看到什么,例如如果提供了中间名。

答案 1 :(得分:3)

鉴于您将始终使用“ First Last”格式的名称,这是一个非常简单的解决方案:

name = ex1.split(' ')
ex2 = name[1] + ', ' + name[0]

>>> ex2
'Doe, John'

答案 2 :(得分:3)

类似

ex1 = 'John Doe Smith Brown'
print(', '.join(ex1.split(None, 1)[::-1]))

应该可以解决问题。

输出为“ Doe Smith Brown,John”。如果您实际上想要“布朗,史密斯,母鹿,约翰”,则删除该, 1参数(告诉.split()仅允许拆分一次)。

答案 3 :(得分:2)

这应该适用于您的示例:

', '.join(ex1.split()[::-1])

答案 4 :(得分:2)

除了发布的许多答案外,我还要重点介绍Python多重分配模式和新引入的 f-strings (3.6+),在您的情况下可以用作:

name, surname = ex1.split(' ')
ex2 = f"{surname}, {name}"

答案 5 :(得分:1)

这应该有效

 ext = ", ".join( reversed(ex1.split(" ")))

答案 6 :(得分:0)

使用正则表达式:

import re
ex2 = re.sub('(\w+)\s(\w+)', r'\2, \1', ex1)

>>> ex2
'Doe, John'
相关问题