【问题标题】:Using bs4 to extract section using text, without tags使用 bs4 提取使用文本的部分,没有标签
【发布时间】:2021-05-02 07:38:06
【问题描述】:

对于一个作业,我有一份除表格外没有标签的财务报告。 我需要从某些部分中提取文本。 为了。例如一节题为“管理层的讨论与分析”。 页面开头的唯一标签是<page>,它在文档末尾而不是实际页面结束。 如何仅使用字符串标题提取整个“管理层的讨论和分析”部分。它内部有多个部分,并且没有标签可以知道它在哪里结束。只是一个索引和文本/标题,其他部分开始。 . . . 只是为了给出页面布局的快照:

<page>
MANAGEMENTS DISCUSSION AND ANALYSIS
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec augue dolor. Aliquam erat volutpat. 
Aliquam vel leo venenatis, commodo nisi in, lacinia ligula. Fusce non placerat quam, ac viverra diam. Suspendisse potenti. 
Vestibulum sit amet bibendum ipsum. Vivamus placerat feugiat justo, vel rhoncus enim sagittis non. Integer id iaculis lorem. 

OVERVIEW
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec augue dolor. Aliquam erat volutpat. 
Aliquam vel leo venenatis, commodo nisi in, lacinia ligula. Fusce non placerat quam, ac viverra diam. Suspendisse potenti. 
Vestibulum sit amet bibendum ipsum. Vivamus placerat feugiat justo, vel rhoncus enim sagittis non. Integer id iaculis lorem. 

<page>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec augue dolor. Aliquam erat volutpat. 
Aliquam vel leo venenatis, commodo nisi in, lacinia ligula. Fusce non placerat quam, ac viverra diam. Suspendisse potenti. 
Vestibulum sit amet bibendum ipsum. Vivamus placerat feugiat justo, vel rhoncus enim sagittis non. Integer id iaculis lorem. 

FOREIGN AFFAIRS:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum nec augue dolor. Aliquam erat volutpat. 
Aliquam vel leo venenatis, commodo nisi in, lacinia ligula. Fusce non placerat quam, ac viverra diam. Suspendisse potenti. 
Vestibulum sit amet bibendum ipsum. Vivamus placerat feugiat justo, vel rhoncus enim sagittis non. Integer id iaculis lorem. 

我想把“管理层的讨论与分析”中的所有文字都提取到“外事”中。

【问题讨论】:

    标签: python beautifulsoup data-extraction


    【解决方案1】:

    在这种情况下,我猜你对 bs4 无能为力。您必须使用正则表达式来匹配完全大写的行,然后在完整的大写行和 emply 空白行之间获取子字符串。

    此代码返回所有完全大写的行。

    import re
    
    rx = re.compile(r"^([A-Z ':]+$)", re.M)
    
    UPPERCASE = [line for line in string.split("\n") if rx.match(line)]
    print(UPPERCASE)
    

    其中 string 是您的测试字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多