我想象这将是一项简单的任务,但我无法在之前的 StackOverflow 问题中找到我正在寻找的东西,这里是......
我有一个专有格式的大文本文件,看起来像这样:
:Entry
- Name
John Doe
- Date
20/12/1979
:Entry
-Name
Jane Doe
- Date
21/12/1979
等等。
文本文件的大小范围从 10kb 到 100mb。我需要用 :Entry
分隔符拆分这个文件。我如何处理基于 :Entry
block 的每个文件?
最佳答案
你可以使用 itertools.groupby将 :Entry
之后出现的行分组到列表中:
import itertools as it
filename='test.dat'
with open(filename,'r') as f:
for key,group in it.groupby(f,lambda line: line.startswith(':Entry')):
if not key:
group = list(group)
print(group)
产量
['- Name\n', 'John Doe\n', '\n', '- Date\n', '20/12/1979\n']
['\n', '-Name\n', 'Jane Doe\n', '- Date\n', '21/12/1979\n']
或者,要处理组,您实际上不需要将 group
转换为列表:
with open(filename,'r') as f:
for key,group in it.groupby(f,lambda line: line.startswith(':Entry')):
if not key:
for line in group:
...
关于python - 在 Python 中用定界符分割大文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7980288/