我有一个包含大量文档的.txt文件。每个文档都以:
开头 11 of 500 DOCUMENTS
数字明显不同。数字前31个空格(如果重要)。 不幸的是,我对正则表达式很可怕。如何使用正则表达式拆分这些文档?
答案 0 :(得分:0)
假设您要提取文档数量,这应该与匹配一个或多个数字\d+
和使用saving groups一样简单。例如:
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'
答案 1 :(得分:0)
我认为你不需要正则表达式。看起来你可以用
轻松识别这条线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)
。
你觉得这对你有用吗?