我有一个脚本,我需要从字符串中提取名字和姓氏并翻转两个。字符串如下所示:
名称:姓氏,名字
我遇到了解决问题的方法:
if "name: " in line:
for nameValue, fname in [q.split(",") for q in line.split(";")]:
for name, lname in [q.split(":") for q in cnvalue.split(";")]:
nameFinal=fname.strip() + " " + lname.strip()
我想知道是否会有更优雅的方式来编写这一简单的代码。
答案 0 :(得分:0)
这有点乱,但它确实有效:
s = 'Name: John, Doe'
print ' '.join(s[6:].replace(" ", "").split(',')[::-1])
>> Doe John
答案 1 :(得分:0)
这应该有效:
if line.startswith('Name: '):
lastname, firstname = line.lstrip('Name: ').split(', ')
答案 2 :(得分:0)
如果你确定你的行总是这种格式,你也可以尝试使用正则表达式,例如:
>>> import re
>>> s = "Name: Lastname, Firstname"
>>> p = re.compile(r"Name: (\w+), (\w+)$")
>>> p.sub(r'\2 \1', s)
'Firstname Lastname'
>>>
或更少的行:
>>> import re
>>> s = "Name: Lastname, Firstname"
>>> re.sub(r"Name: (\w+), (\w+)$", r'\2 \1', s)
'Firstname Lastname'
>>>
实际上很容易测试线是否匹配(或不是),也可以随意创建所需的输出格式。