如何以特定顺序将这些详细信息存储在元组中 要存储的字符串:
3445 3332r IT Ron Mose Don Simpson
3446 2334f Teacher Hezen Mike Rob
3447 2344g Writer Mike Robert
每行应存储在一个元组中,该元组应仅包含5个项:ID, reference, job, otherNames, Surname
。
例如,姓氏是姓氏,例如在第一行3445
是ID
,3332r
是reference
,IT
是{{ 1}},job
是Ron Mose Don
,other names
是Simpson
。
所以第一行应该像 3445,3332r,IT,Ron Mose Don,Simpson
或第2行应存储为 3446,2334f,教师,Hezen Mike,Rob
或最后一行应该是 3447,2344g,作家,迈克,罗伯特
的元组答案 0 :(得分:2)
拆分每个字符串,然后将其解压缩到您想要的结构中。将otherNames
重新加入单个字符串。
l = ['3445 3332r IT Ron Mose Don Simpson',
'3446 2334f Teacher Hezen Mike Rob',
'3447 2344g Writer Mike Robert']
result = [(a, b, c, ' '.join(d), e) for a, b, c, *d, e in (item.split() for item in l)]
结果:
>>> print(*result, sep='\n')
('3445', '3332r', 'IT', 'Ron Mose Don', 'Simpson')
('3446', '2334f', 'Teacher', 'Hezen Mike', 'Rob')
('3447', '2344g', 'Writer', 'Mike', 'Robert')
答案 1 :(得分:1)
这是你想要的吗?
7
演示:
-7
答案 2 :(得分:0)
在工作中,我仍在运行2.7.x,所以我的解决方案适用于此。我的策略是拆分前3个令牌(id,ref,job)。对于剩余的令牌,最后一个是姓氏,其余的是另一个名称。
def tokenize(line):
id_, ref, job, name = line.split(' ', 3)
name, surname = name.rsplit(' ', 1)
return id_, ref, job, name, surname
lines = """3445 3332r IT Ron Mose Don Simpson
3446 2334f Teacher Hezen Mike Rob
3447 2344g Writer Mike Robert"""
for line in lines.splitlines():
print(tokenize(line))
输出:
('3445', '3332r', 'IT', 'Ron Mose Don', 'Simpson')
('3446', '2334f', 'Teacher', 'Hezen Mike', 'Rob')
('3447', '2344g', 'Writer', 'Mike', 'Robert')