2012-11-13 84 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

哦,很棒!这个函数甚至不用去执行那个块。感谢您解释以及回答。 –