1

我正在做一个项目,我需要将 10-K 分解成它们的组成段落。对于某些 10-K,我可以做一些简单的事情,例如soup.find_all('p'),但我也看到其他 10-K<div>用于所有内容而不是<p>标签。以下是我看到公司声明断句的三种不同方式:

使用空 div 标签在段落之间创建空间的情况:

<div></div><div>Text of a paragraph</div><div></div>

在顶部或底部使用边距/填充来创建空间的情况:

<div style="padding-top: 10pt">Text of a paragraph</div>`, `<div style="margin-bottom: 10pt"></div>

<br>公司使用标签的案例:

<div><br><div><div>Text of paragraph</div><div><br></div>

我不得不为这三种情况中的每一种情况编写新代码,并且我担心可能有其他方法来标记我尚未遇到的段落。

问题:我是否可以使用包或方法来标准化所有这些声明断句的不同方式,或者我应该继续为遇到的每个新案例编写代码?

4

1 回答 1

0

我不认为您可以在这里采用通用方法。但是,作为一种启发式方法,您可能可以将<div>文本内容视为一个段落,而不管是否包含其他标签(例如 other <div>s)。

您甚至可以尝试编写一个 XPath 查询来捕获此条件并使用 XML 解析器来枚举节点。或者将可能的包含文本的标签列表传递给soup.find_all(),例如:

soup.find_all(['div', 'p'])

并通过仅包含文本内容的非空发现将它们视为段落。

于 2020-03-04T12:10:41.457 回答