2012-11-13 52 views
0

處理一個函數,該函數在塊之間的空間上創建一行文本並將它們轉換爲基於 的內部列表。該代碼適用於除最後一個塊之外的所有塊,它忽略了或某物。從文本文件python中創建嵌套列表的函數

代碼:

def build_grocery_list(grocery_file): 
    food_list = [] 
    inner_list = [] 
    for line in grocery_file: 
     if line.strip() == "": 
      food_list.append(inner_list) 
      inner_list = []    
     if line.strip() != "": 
      inner_list.append(line.strip()) 

    return food_list 

回報:[['milk', 'cheese', 'cream cheese', 'eggs'], ['bread', 'buns', 'pita'], ['hamburgers', 'hotdogs', 'chicken'], ['chicken soup', 'canned tuna']]

缺少最後一塊:lettuce, cabbage

+1

你可以發佈'grocery_file'的內容嗎? – Blender

+1

你能告訴我們文本文件嗎? –

+0

我會如何發佈它?將每個嵌套列表看作3個單獨的行。當一個新的嵌套列表開始時,在列表的最後一個元素之間存在一個空格,在下一個 –

回答

1

如果你有文字的末尾空行文件,它會奏效。如果不是,它永遠不會追加最後的inner_list。只需添加一個檢查並在退出循環後追加。

def build_grocery_list(grocery_file): 
    food_list = [] 
    inner_list = [] 
    for line in grocery_file: 
     if line.strip() == "": 
      food_list.append(inner_list) 
      inner_list = []    
     if line.strip() != "": 
      inner_list.append(line.strip()) 
    if (inner_list): 
     food_list.append(inner_list) 

    return food_list 
+0

哦,很棒!這個函數甚至不用去執行那個塊。感謝您解釋以及回答。 –