首页 > 解决方案 > 使用python通过正则表达式选择文本中的每个段落

问题描述

我将 PDF 读入 python 并想从中提取特定段落。为此,我使用 python 并尝试通过正则表达式获取选择。为了说明这种情况,这里有一个例子。

INTERNATIONAL MONETARY FUND            7\n\x0cBELGIUM\n\n\n\nPOLICY DISCUSSIONS—MAINTAINING THE REFORM\nMOMENTUM\n7.     The current recovery is an opportunity to strengthen the resilience and growth\npotential of the Belgian economy. The government's ability to deal with future shocks will depend\non whether it implements the right policies now while the economy continues to recover.\n\n\uf0b7   First, with public debt above 100 percent of GDP and only starting to come down, Belgium still\n    has a long way to go to rebuild buffers and achieve a more sustainable fiscal position. This will\n    require following through on plans to gradually move toward structural balance.\n\n\uf0b7   Second, with real GDP growth projected at only around 1½ percent for the foreseeable future,\n    further labor and product market reforms are needed to increase productivity growth, raise\n    potential output, and integrate vulnerable groups into the labor market.\n\n\uf0b7   Third, although the financial sector has recovered since the crisis and is generally sound, cyclical\n    vulnerabilities are rising and new challenges are emerging, suggesting the need for vigilance\n    and proactive policies.3\n\n8.      The government agreed last summer on a new package of measures related to\ntaxation, the labor market, and social benefits (Table 2 and Box 1). The most notable reform was\na reduction in Belgium's corporate income tax (CIT) rate from 34 percent to 25 percent, to be\nphased in over the next three years (SMEs will benefit from a reduced rate of 20 percent starting in\n2018). To compensate for the resulting revenue loss, the notional interest rate deduction (NID) was\nmodified to apply only to incremental corporate equity rather than to the total stock, and new anti-\ntax avoidance measures were introduced consistent with Belgium's EU obligations.4 Together, the\nmeasures are designed to enhance Belgium's competitiveness while preserving revenue neutrality.\n\n9.      Policy discussions focused on the importance of maintaining the reform momentum\nand not yielding to complacency. Achieving the balanced budget goal will require efforts at all\nlevels of government to make spending more efficient and safeguard revenues (Section A).\nA combination of policies and reforms could help raise productivity growth, including increasing\ninvestment in infrastructure and enhancing competition in services (Section B). To fully realize\nBelgium's employment potential, it will be critical to address the severe fragmentation of the labor\nmarket (Section C). To preserve financial stability, the authorities should address vulnerabilities in the\nmortgage market and carefully navigate the transition toward a European Banking Union (Section D).\n\n\n\n\n3\n A comprehensive assessment of Belgium's financial sector took place in 2017 under the Financial Sector\nAssessment Program (FSAP).\n4\n  The NID aims to neutralize the CIT treatment of debt and equity by supplementing the deductibility of interest with\na deduction that is the product of corporate equity and a notional interest rate.\n\n\n8

每个段落以一个数字开头,一个或两个数字,后跟一个点和三到七个空格。结尾包括下一个双新行\n\n,后跟一个数字,一个或两个数字,后跟一个点。请注意,这也应该作为下一个起点。在上面的例子中,我应该找到三个段落:

第一段:

  1. 当前的复苏是增强比利时经济的韧性和增长潜力的机会。政府应对未来冲击的能力将取决于\n在经济继续复苏的同时,它是否现在实施了正确的政策。\n\n\uf0b7 首先,比利时的公共债务超过 GDP 的 100%,而且才开始下降重建缓冲和实现更可持续的财政状况仍有很长的路要走。这将\n 需要贯彻逐步实现结构平衡的计划。\n\n\uf0b7 其次,在可预见的未来,实际 GDP 增长率预计仅为 1.5% 左右,\n 需要进一步的劳动力和产品市场改革提高生产力,提高潜在产出,并将弱势群体融入劳动力市场。

第二段:

  1. 政府去年夏天就与税收、劳动力市场和社会福利相关的一揽子新措施达成一致(表 2 和方框 1)。最显着的改革是将比利时的企业所得税 (CIT) 税率从 34% 降至 25%,将在未来三年内分阶段实施(中小企业将从 2018 年开始的 20% 税率降低中受益) . 为了弥补由此造成的收入损失,将名义利率扣除 (NID) 修改为仅适用于增量公司股权而不是总存量,并根据比利时的欧盟义务引入了新的反\n避税措施。 4这些措施一起\n旨在提高比利时的竞争力,同时保持收入中立。\n\n

最后是第三个:

  1. 政策讨论的重点是保持改革势头\n而不是自满。实现平衡的预算目标需要各级政府\n努力提高支出效率并保障收入(A部分)。\n政策和改革相结合有助于提高生产力,包括增加\n基础设施投资和加强竞争服务(B 部分)。为了充分发挥\n比利时的就业潜力,解决劳动力市场的严重分散化问题至关重要(C 部分)。为保持金融稳定,当局应解决\n抵押贷款市场的脆弱性,并谨慎引导向欧洲银行业联盟的过渡(D 部分)。\n\n\n\n\n3\n 对比利时的全面评估'

我尝试使用以下正则表达式:r'(?m)[0-99].*[.] {3,7} (.*?) \n\n从头到尾选择所有内容的理由

  1. (?m)[0-99].*[.] {3,7}: 标识开头,对每一行分别进行。
  2. \n\n指定结束。

但是,它找不到任何东西。

标签: pythonregex

解决方案


[0-99]模式是错误的,因为它匹配从0to 的任何 1 个数字9。请参阅为什么 [01-12] 范围没有按预期工作?. ( re.M)(?m)修改^$锚定,但您在模式中都没有。

您可以使用

r'(?sm)^\d\d?\. {3,7}(.*?)(?=\n\n\d\d?\. |\Z)'

请参阅正则表达式演示

细节

  • (?sm)-re.DOTALLre.MULTILINE启用选项
  • ^- 一行的开始
  • \d\d?- 1 位或 2 位数字(099
  • \.- 一个点
  • <code> {3,7}</code> - 3 to 7 spaces (replace with[^\S\r\n]{3,7}` 匹配任何水平空格)
  • (.*?)- 第 1 组:尽可能少的任何 0+ 个字符
  • (?=\n\n\d\d?\. |\Z)- 一个位置,紧随其后的是两个换行符 ( \n\n),然后是 1 或 2 个数字 ( \d\d?) 和一个点,后跟空格或 ( |) 整个字符串的结尾 ( \Z)。

Python演示

import re
s="INTERNATIONAL MONETARY FUND            7\n\x0cBELGIUM\n\n\n\nPOLICY DISCUSSIONS—MAINTAINING THE REFORM\nMOMENTUM\n7.     The current recovery is an opportunity to strengthen the resilience and growth\npotential of the Belgian economy. The government's ability to deal with future shocks will depend\non whether it implements the right policies now while the economy continues to recover.\n\n\uf0b7   First, with public debt above 100 percent of GDP and only starting to come down, Belgium still\n    has a long way to go to rebuild buffers and achieve a more sustainable fiscal position. This will\n    require following through on plans to gradually move toward structural balance.\n\n\uf0b7   Second, with real GDP growth projected at only around 1½ percent for the foreseeable future,\n    further labor and product market reforms are needed to increase productivity growth, raise\n    potential output, and integrate vulnerable groups into the labor market.\n\n\uf0b7   Third, although the financial sector has recovered since the crisis and is generally sound, cyclical\n    vulnerabilities are rising and new challenges are emerging, suggesting the need for vigilance\n    and proactive policies.3\n\n8.      The government agreed last summer on a new package of measures related to\ntaxation, the labor market, and social benefits (Table 2 and Box 1). The most notable reform was\na reduction in Belgium's corporate income tax (CIT) rate from 34 percent to 25 percent, to be\nphased in over the next three years (SMEs will benefit from a reduced rate of 20 percent starting in\n2018). To compensate for the resulting revenue loss, the notional interest rate deduction (NID) was\nmodified to apply only to incremental corporate equity rather than to the total stock, and new anti-\ntax avoidance measures were introduced consistent with Belgium's EU obligations.4 Together, the\nmeasures are designed to enhance Belgium's competitiveness while preserving revenue neutrality.\n\n9.      Policy discussions focused on the importance of maintaining the reform momentum\nand not yielding to complacency. Achieving the balanced budget goal will require efforts at all\nlevels of government to make spending more efficient and safeguard revenues (Section A).\nA combination of policies and reforms could help raise productivity growth, including increasing\ninvestment in infrastructure and enhancing competition in services (Section B). To fully realize\nBelgium's employment potential, it will be critical to address the severe fragmentation of the labor\nmarket (Section C). To preserve financial stability, the authorities should address vulnerabilities in the\nmortgage market and carefully navigate the transition toward a European Banking Union (Section D).\n\n\n\n\n3\n A comprehensive assessment of Belgium's financial sector took place in 2017 under the Financial Sector\nAssessment Program (FSAP).\n4\n  The NID aims to neutralize the CIT treatment of debt and equity by supplementing the deductibility of interest with\na deduction that is the product of corporate equity and a notional interest rate.\n\n\n8"
for r in re.findall(r'(?sm)^\d\d?\. {3,7}(.*?)(?=\n\n\d\d?\. |\Z)', s):
    print(r, "\n---------")

输出:

The current recovery is an opportunity to strengthen the resilience and growth
potential of the Belgian economy. The government's ability to deal with future shocks will depend
on whether it implements the right policies now while the economy continues to recover.

   First, with public debt above 100 percent of GDP and only starting to come down, Belgium still
    has a long way to go to rebuild buffers and achieve a more sustainable fiscal position. This will
    require following through on plans to gradually move toward structural balance.

   Second, with real GDP growth projected at only around 1½ percent for the foreseeable future,
    further labor and product market reforms are needed to increase productivity growth, raise
    potential output, and integrate vulnerable groups into the labor market.

   Third, although the financial sector has recovered since the crisis and is generally sound, cyclical
    vulnerabilities are rising and new challenges are emerging, suggesting the need for vigilance
    and proactive policies.3 
---------
The government agreed last summer on a new package of measures related to
taxation, the labor market, and social benefits (Table 2 and Box 1). The most notable reform was
a reduction in Belgium's corporate income tax (CIT) rate from 34 percent to 25 percent, to be
phased in over the next three years (SMEs will benefit from a reduced rate of 20 percent starting in
2018). To compensate for the resulting revenue loss, the notional interest rate deduction (NID) was
modified to apply only to incremental corporate equity rather than to the total stock, and new anti-
tax avoidance measures were introduced consistent with Belgium's EU obligations.4 Together, the
measures are designed to enhance Belgium's competitiveness while preserving revenue neutrality. 
---------
Policy discussions focused on the importance of maintaining the reform momentum
and not yielding to complacency. Achieving the balanced budget goal will require efforts at all
levels of government to make spending more efficient and safeguard revenues (Section A).
A combination of policies and reforms could help raise productivity growth, including increasing
investment in infrastructure and enhancing competition in services (Section B). To fully realize
Belgium's employment potential, it will be critical to address the severe fragmentation of the labor
market (Section C). To preserve financial stability, the authorities should address vulnerabilities in the
mortgage market and carefully navigate the transition toward a European Banking Union (Section D).




3
 A comprehensive assessment of Belgium's financial sector took place in 2017 under the Financial Sector
Assessment Program (FSAP).
4
  The NID aims to neutralize the CIT treatment of debt and equity by supplementing the deductibility of interest with
a deduction that is the product of corporate equity and a notional interest rate.


8 
---------

推荐阅读