问题描述
我有一个包含大量文档的 .txt 文件。 每个文件都以:
11 of 500 DOCUMENTS
数字明显不同。 数字前 31 个空格(如果重要的话)。 不幸的是,我对正则表达式很糟糕。 如何使用正则表达式拆分这些文档?
1楼
假设您要提取文档数量,这应该与匹配一位或多位数字\\d+
并使用一样简单。
例子:
In [1]: import re
In [2]: s = " 11 of 500 DOCUMENTS"
In [3]: match = re.search(r"(\d+) of (\d+) DOCUMENTS", s)
In [4]: match.group(1)
Out[4]: '11'
In [4]: match.group(2)
Out[4]: '500'
2楼
我认为您不需要为此使用正则表达式。 看起来你可以很容易地识别出这条线
line.startswith(31*' ')
或与
line.endswith('of 500 DOCUMENTS\n')
或者两者兼而有之,如果你是一个腰带和吊带的人。 假设一次读取一行文件没有问题,你不能做一些类似的事情吗?
document = []
for line in open('500docs.txt'):
if line.startswith(31*' '):
if document:
analyze(document)
document = []
else:
document.append(line)
这不处理文件中的最后一个文档,因此您还需要循环外的analyze(document)
。
你觉得这对你有用吗?