2012-11-11 110 views
0

包含如下信息的文件 我想將此文件轉換爲字符串列表的列表 組之間有空行。python:將文件轉換爲字符串列表的列表

pear 
banana 

milk 
tea 
coffee 

,並將結果回報:

build_list(f): 
[[pear, banana], [milk, tea, coffee]] 
+0

你有任何代碼嗎? – squiguy

+0

我正在考慮刪除每組之間的空行。但到目前爲止,我的代碼不工作。 – user1718467

+1

發佈,所以我們可以幫助:) – squiguy

回答

1

試試這個:

from itertools import groupby 

def build_list(name): 
    with open(name, "r") as f: 
     return [[i.strip() for i in group] for key, group in 
       groupby(f, key=lambda k: (k.strip() == "")) if not key] 

該解決方案甚至會允許,你有團體或多個空之間的一個以上的空行退化文件最後一行。

2

這應該做到這一點:

with open("data.txt") as f: 
    res = [line.split('\n') for line in f.read().split('\n\n')] 

分割輸入數據分成組然後分裂每個組成線。

1

Stack_13328928.txt是您的列表。請注意,輸入文件中的最後一行必須是新行,否則最後一行將丟失,但我認爲可以修改代碼,因此不需要空白的新行。

import csv 
in_file = open("stack_13328928.txt") 
CSV = csv.reader(in_file) 
outer_ls = [] 
inter_ls = [] 
for i in CSV: 
    try: 
     i[0] 
     inter_ls += i 
    except: 
     outer_ls.append(inter_ls) 
     inter_ls = [] 

print outer_ls