2015-04-29 217 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("' "))