python记录分隔符文件迭代

时间:2012-02-17 23:08:53

标签: python

我有一个非常大的文本文件(比内存中的大得多)。我想做的是使用类似的东西:

for record in myFile:
 process_record();

添加了一些技巧,我的记录用空行分隔(中间有各种各样的东西)。例如......

data1 
data2,data3,moredata

anotherrecord,otherstuff
yippee
kaiyay
mom

aThird,record:here

如何在python中迭代文件,其中每个循环迭代访问文件中的单个记录?

2 个答案:

答案 0 :(得分:4)

您可以使用生成器功能:

def records(textfile):
    record_lines = []
    for line in textfile:
        if line != '\n':
            record_lines.append(line)
        else:
            yield ''.join(record_lines)
            record_lines = []
    yield ''.join(record_lines)


for record in records(the_file):
    process(record)

答案 1 :(得分:2)

您可以创建一个连接线的迭代器,直到找到一个空行。

class MyIter:
 def __init__(self, infile):
    self.infile=infile

 def __iter__(self):
    return self

 def next(self):
    lines = []
    for line in infile:
        line = line.strip()
        if len(line) > 0:
            lines.append(line)
        else:
            break
    if len(lines)==0:
        raise StopIteration
    else:
        return ",".join(lines)

并尝试

for line in MyIter(infile):
    print line