2016-08-04 77 views
-1

這是怎麼了我的名單看使用一些CSV解析後:排序列表的Python的list

list=[['1131', '01/06/15', 'PROFI ROM FOOD SRL', '290.7'], 
     ['1131', '', '', ''], ['2024194PJ', '01/08/15', 
     'SOCIETATEA NATIONALA DE', '2,088.17'], ['2024194PJ', '', 'RADIOCOMUNICATII SA', '']] 

(這是一個數據樣本,實際列表會更大) 我會解析名單:

for a in list: 
    for x in a: 
     if ....: 
     anotherlist.append(x) 

我想這樣的輸出:

anotherlist=[['1131', '01/06/15', 'PROFI ROM FOOD SRL', '290.7'], 
['2024194PJ', '01/08/15', 'SOCIETATEA NATIONALA DE RADIOCOMUNICATII 
SA', '2,088.17']] 

我想2RD索引值追加到每上一個列表並刪除特定列表,所以這

[['2024194PJ', '01/08/15', 'SOCIETATEA NATIONALA DE', 
'2,088.17'], ['2024194PJ', '', 'RADIOCOMUNICATII SA', '']] 

將是

[['2024194PJ', '01/08/15', 
'SOCIETATEA NATIONALA DE RADIOCOMUNICATII SA', '2,088.17']] 

,也擺脫這種格式

['1131', '', '', ''] 

,但我不知道該怎麼做。

回答

0

假設該列表會一直跟着你提供的架構:

list2 = [] 
for i in range(len(list)/2): 
    list2 += [[list[i*2][0], 
       list[i*2][1], 
       list[i*2][2] + ' ' + list[i*2+1][2], 
       list[i*2][3]]] 

說明:
我們先從一個空列表(列表2):

list2 = [] 

for循環然後進入通過整個列表,但只看每個第二個元素:

for i in range(len(list)/2): 

在每個步驟中,它增加了一個新的條目,以列表2:

list2 += 

這種新的條目是兩個列表的元素的組合,列表[I * 2]和列表[I * 2 + 1]:

  [[list[i*2][0], 
      list[i*2][1], 
      list[i*2][2] + ' ' + list[i*2+1][2], 
      list[i*2][3]]] 
+0

完美,有效,你能解釋我你在那裏做了什麼?非常感謝! – Rommel

+0

@Rommel我在答案中增加了一些細節。 –

+0

我明白了這一點,但循環如何忽略我不需要的列表?謝謝! – Rommel