2017-06-02 23 views
-2

我有一个从SQL查询中得到的名称列表。它们的形式如下:如何将字符串拆分为特定组?

[('Lastname Firtsname Middlename',), ('Lastname Firstname',)]. 

我在解析名称时遇到困难。我希望他们的形式:

Firstname Middlename Lastname , Firstname Lastname 

有人可以告诉我最好的方法来实现这一目标吗?

+1

斯普利特元组和指标安排?尝试一下? –

+2

你有没有尝试过任何东西?你甚至不清楚你想要什么输出。一个字符串?另一个字符串重新排列的元组? –

+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

可以splitlist并采取tuplessplit的第一index然后它出现找到另一个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 
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 

您可以根据需要创建循环结构和条件输出,但对于您输入的请求的输出,这种简单易行的暴力破解代码可能比更具想象力的示例更好。

0

迭代列表,将每个元组项0(即每个元组中的唯一项)分开并对其进行索引。该函数返回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' 

OR以保持输出的tuple一个list,改变new_names.append声明:

new_names.append(('{} {}'.format(' '.join(n[1:]),n[0]),)) 

将返回:

[('Firtsname Middlename Lastname',), ('Firstname Lastname',)]