2015-04-29 187 views
0

我的列表中的每一行是这样的:分割字符串

[(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])] 

,我想它打印只是名字,在这种情况下Vicky。我使用的代码是这样的

for x in numbers: 
    r=str(x) 
    d1= r.split(',') 
    print ('D1', d1) 

,它打印此:

['[(21', " ['Rodriguez'", " 'Lara'", " 'Vicky'", " '55302292'])]"] 
+1

'和设定[0] [1] [2]'。 – letsc

+0

这些与CSV文件有关吗?是的,Python列表和元组对象在语法中使用逗号来分隔不同的值,但这不会使它们成为CSV。 :-) –

+0

如果它们全都具有相同的结构,只是'[(21,['Rodriguez','Lara','Vicky','55302292'])] [0] [1] [2]':) – marmeladze

回答

3

不要把你看似完美的列表转换为字符串!只需使用索引:

x[0][1][2] 

为了说明这是什么一样:

>>> x = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])] 
>>> x[0] 
(21, ['Rodriguez', 'Lara', 'Vicky', '55302292']) 
>>> x[0][1] 
['Rodriguez', 'Lara', 'Vicky', '55302292'] 
>>> x[0][1][2] 
'Vicky' 

每个追加认购([...])钻头深入嵌套结构; x[0]从列表中提取元组; x[0][1]然后访问该元组中的列表值(x[0][0]会给你21),并且x[0][1][2]会返回'Vicky',该嵌套列表中的第三个元素。

3

先拿到名单,然后从中

>>> list = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292'])] 
>>> names = list[0][1] 
>>> names 
['Rodriguez', 'Lara', 'Vicky', '55302292'] 
>>> names[2] 
Vicky 
0

你可以在你的列表迭代中提取数据,而拆包在每次迭代中的元组。这将使它稍微更干净/可读。

>>> x = [(21, ['Rodriguez', 'Lara', 'Vicky', '55302292']), (22, ['Micheal', 'Jackson', 'John', '66302292'])] 
>>> for age, details in x: 
...  print details[2] 
... 
Vicky 
John 
+0

也许你可以用一些解释它的文字来回答你的答案:)? –

0

尝试这种情况:

for x in numbers: 
    r=str(x) 
    a=r.split(',') 
    print (a[3].strip("' "))