正则表达式Python"如果数字后跟字母字符"

时间:2015-10-25 18:36:55

标签: python regex

我有一个包含大量文档的.txt文件。每个文档都以:

开头
                               11 of 500 DOCUMENTS

数字明显不同。数字前31个空格(如果重要)。 不幸的是,我对正则表达式很可怕。如何使用正则表达式拆分这些文档?

2 个答案:

答案 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)

你觉得这对你有用吗?