0

テキストの行を取得し、ブロック間のスペースに基づいてそれらを内部リストに変換する関数に取り組んでいます。このコードは、最後のチャンクを除いてすべて機能しますが、無視するか何かです。

コード:

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

4

1 に答える 1

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
于 2012-11-13T20:33:28.853 に答える