python - 在 Python 中用定界符分割大文本文件

标签 python text-parsing

我想象这将是一项简单的任务,但我无法在之前的 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/

相关文章:

python - 找不到类 org.apache.hive.jdbc.HiveDriver

list - Haskell::将文本行解析为列表列表

python - asn1 将文本解析为 json

mysql - 如何从mysql中的url中删除子域?

python - 在 python 中的行中找到的匹配字符串后打印前几行

python - 函数式编程 : How to convert an implementation of fibonacci written in python to haskell

python - 表格不存在时,Pandas pd.read_html错误代码

python - 使用 TensorFlow 进行图像分割

python - 用 AST python 表达式中的实际值替换变量名

c++ - 我可以通过哪个库等来解析这些类型的数据?在 C++ 中