1

我刚开始学习 Python,遇到了一个小问题。我需要解析一个文本文件,更具体地说是一个 HTML 文件(但它的语法很奇怪 - divs after divs after divs,Google 对某个 PDF 的“查看为 HTML”的结果我似乎无法提取文本因为它有一个用 m$ word 完成的凌乱表格)。

无论如何,我选择了一种相当低级的方法,因为我只需要尽快获得数据,而且由于我开始学习 Python,我认为学习基础知识对我也有好处。

除了一小部分我需要从一组 div 中检索一组整数之外,我已经完成了所有工作。这是一个例子:

<div style="position:absolute;top:522;left:1020"><nobr>*88</nobr></div>

现在我想检索里面的所有数字<nobr></nobr>(在这种情况下,'588'),因为它是一个非常混乱的文件,我必须确保我得到的内容是正确的。为此,里面的数字<nobr></nobr>必须以"left:1020","left:1024"或开头"left:1028"。这是因为自动转换,我认为最好的选择是获取前面的所有数字left:102[0-]

为此,我试图使用:

for o in re.finditer('left:102[0-9]"><nobr>(.*?)</nobr></div>', words[index])
    out = o.group(1)

但到目前为止,没有这样的运气......我怎样才能得到这些数字?

在此先感谢,J。

4

1 回答 1

1

不要使用正则表达式来解析 HTML。BeautifulSoup会轻松解决这个问题。

至于您的具体问题,可能是您在第一行末尾缺少一个冒号:

for o in re.finditer('left:102[0-9]"><nobr>(.*?)</nobr></div>', words[index]):
    out = o.group(1)

如果这不是问题,请按照您期望的输出发布您遇到的错误。

于 2010-01-28T11:36:08.890 回答