我有一个从SQL查询中获取的名称列表。它们的形式如下:
[('Lastname Firtsname Middlename',), ('Lastname Firstname',)].
我很难解析名字。我希望他们的形式是:
Firstname Middlename Lastname , Firstname Lastname
有人可以告诉我最好的方法吗?
答案 0 :(得分:1)
假设输出格式为
output = [('Lastname Firstname Middlename'), ('Lastname Firstname')]
然后
last_first_middle = output[0].split()
last_first = output[1].split()
parsed_output = [('{} {} {}').format(last_first_middle[1], last_first_middle[2], last_first_middle[0]), ('{} {}').format(last_first[1], last_first[0])]
给出输出
['Firstname Middlename Lastname', 'Firstname Lastname']
答案 1 :(得分:1)
您可以split
list
并先index
tuples
和split
,然后将其附加到另一个list
。之后,您可以loop
浏览新列表并根据需要打印值。例如:
data = [('Lastname Firtsname Middlename',), ('Lastname Firstname',)]
first = [data[0][0].split()]
second = [data[1][0].split()]
for x, y in zip(first, second):
print x[1], x[2], x[0] + ' , ' + y[1], y[0]
输出:
Firtsname Middlename Lastname , Firstname Lastname
答案 2 :(得分:1)
所以我们实际上在元组和列表结构中的2个字符串中有5个单词。
要访问每个单词,我们需要了解结构以及如何访问它们。
列表访问非常简单:item[0]
和item[1]
现在,item[0]
将包含一个元组。要访问此元组,我们需要另一个索引。因此item[0][0]
将包含我们的3个字符串,item[1][0]
将包含我们的2个字符串。
现在我们只需要拆分字符串。 item[0][0].split()
会为我们提供一个包含3个条目的列表:['Lastname', 'Firtsname', 'Middlename']
。 item[1][0].split()
会向我们提供一个包含2个条目的列表:['Lastname', 'Firstname']
最后,我们需要创建输出字符串。我们需要做的就是按照我们希望访问字符串的顺序访问我们的2个字符串。
我会抛出下面的第一个密码,让您的内容更有效率
def FirstPass(input):
name_3part = input[0][0].split()
name_2part = input[1][0].split()
output_part1 = ' '.join(name_3part[1], name_3part[2], name_3part[0])
output_part2 = ' '.join(name_2part[1], name_2part[0])
output = ', '.join(output_part1, output_part2)
return output
您可以根据需要创建循环结构和条件输出,但是对于您所请求输出的输入,这个简单易懂的强力代码可能比更具想象力的示例更好。
答案 3 :(得分:0)
迭代列表,拆分每个元组项0
(即每个元组中唯一的项)并对其进行索引。此函数在first-middle-last中返回list
个名称。如果需要修改。
names = [('Lastname Firtsname Middlename',), ('Lastname Firstname',)]
def formatnames(names):
new_names = []
for name in names:
n = name[0].split()
new_names.append('{} {}'.format(' '.join(n[1:]),n[0]))
return new_names
formatnames(names)
返回:
['Firtsname Middlename Lastname', 'Firstname Lastname']
要返回所有名称的单个字符串,请更改return
语句:
return ' , '.join(new_names)
返回:
'Firtsname Middlename Lastname , Firstname Lastname'
或要将输出保留为list
tuple
,请更改new_names.append
声明:
new_names.append(('{} {}'.format(' '.join(n[1:]),n[0]),))
返回:
[('Firtsname Middlename Lastname',), ('Firstname Lastname',)]