My candidate: def chunker(f, splitter=";"): rest = "" for line in f: line = rest + line if splitter in line: first, rest = line.split(splitter, 1) yield first else: rest = line if rest: yield rest if __name__ == "__main__": import sys for chunk in chunker(open(sys.argv[1]), ';'): print repr(chunk) Skip