2012-11-11 3 views
0

파일에 아래의 정보가 포함되어 있습니다. 이 파일을 문자열 목록으로 변환하고 싶습니다. 그룹 사이에 빈 줄이 있습니다. 파이썬 : 파일을 문자열 목록으로 변환합니다.

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 
관련 문제