- 论坛徽章:
- 11
|
回复 3# sullybear
但愿我看明白了。generator实现,不管文件有多大,占用很少内存。- import io
- infile = io.StringIO(
- '''A 1 3
- A 4 5
- B 2 3
- B 4 6
- B 8 9
- ''')
- def parse(fp):
- for line in fp:
- fields = line.split()
- if len(fields) == 3 and fields[1].isdigit() and fields[2].isdigit():
- fields[1], fields[2] = int(fields[1]), int(fields[2])
- yield fields
- def merge(records):
- value = next(records, None)
- if value is None:
- return
- for e in records:
- if value[0] == e[0] and value[2] + 1 == e[1]:
- value[2] = e[2]
- else:
- yield value
- value = e
- yield value
- def main():
- for e in merge(parse(infile)):
- print(*e)
- if __name__ == '__main__':
- main()
复制代码 保存为main.py,执行:- bash-3.2 $python --version
- Python 3.3.4
- bash-3.2 $python main.py
- A 1 5
- B 2 6
- B 8 9
复制代码 |
|