python - 正则表达式从文本文件中提取文本块?
问题描述
我需要使用正则表达式从 Python 中的文本文件中提取标题和它们下面的文本块,但我发现这很困难。
我将此PDF转换为文本,使其现在看起来像这样:
到目前为止,我已经能够使用以下正则表达式获取所有数字标题(12.4.5.4、12.4.5.6、13、13.1、13.1.1、13.1.12):
import re
with open('data/single.txt', encoding='UTF-8') as file:
for line in file:
headings = re.findall(r'^\d+(?:\.\d+)*\.?', line)
print(headings)`
我只是不知道如何获得这些标题的措辞部分或它们下面的文本段落。
编辑- 这是文本:
IS EN 60601-1:2006&A1:2013&AC:2014&A12:2014
60601-1 © IEC:2005 60601-1 © IEC:2005
– 337 – – 169 –</p>
12.4.5.4 产生诊断或治疗辐射的其他 ME 设备 适用时,制造商应在风险管理过程中解决与产生诊断或治疗辐射的 ME 设备相关的风险,但诊断 X 射线和放射治疗除外(见 12.4.5.2 和 12.4 .5.3)。
通过检查风险管理文件来检查合规性。
12.4.6 诊断或治疗声压适用时,制造商应在风险管理过程中解决与诊断或治疗声压相关的风险。
通过检查风险管理文件来检查合规性。
13 * 危险情况和故障条件
13.1 特定的危险情况
- 一般的
13.1.1 当应用 4.7 中描述和 13.2 中列出的单一故障条件时,一次一个,ME 设备中不会发生 13.1.2 到 13.1.4(包括)中的任何危险情况。
4.7 中描述了一次任何一个组件的故障,这可能导致危险情况。
- 排放、外壳变形或超过最高温度
13.1.2 不得发生以下危险情况: – 危险中的火焰、熔融金属、有毒或可燃物质的排放
数量;
——外壳变形到不符合 15.3.1 的程度;–
当按 11.1.3 所述测量时,应用部分的温度超过表 24 中确定的允许值;不是应用部件但可能被触摸的 ME 设备部件的温度,在按 11.1.3 所述测量和调整时超过表 23 中的允许值;
–
– 超过表 22 中确定的“其他组件和材料”的允许值乘以 1.5 - 12.5 °C。绕组限制见表 26、表 27 和表 31。在所有其他情况下,表 22 的允许值适用。
应使用 11.1.3 中描述的方法测量温度。
4.7、8.1 b)、8.7.2 和 13.2.2 中关于火焰、熔融金属或可燃物质排放的单一故障条件不适用于以下部件和组件: – 结构或供电电路限制单一故障中的功耗
条件小于 15 W 或能量耗散小于 900 J。
解决方案
您可以使用您的模式并在其后匹配一个空格,然后是该行的其余部分。
然后重复匹配以下所有不以标题开头的行。
^\d+(?:\.\d+)* .*(?:\r?\n(?!\d+(?:\.\d+)* ).*)*
^\d+(?:.\d+)*
匹配标题后跟空格的模式.*
匹配除换行符以外的任何字符 0+ 次(?:
非捕获组\r?\n
匹配换行符(?!
负前瞻,断言直接向右的不是\d+(?:.\d+)*
标题模式
)
关闭前瞻.*
匹配除换行符以外的任何字符 0+ 次
)*
关闭非捕获组并重复 0+ 次以匹配所有行
推荐阅读
- gremlin - 在graphdb中减去多个日期范围
- sql - SQL (Presto):如何在 lat/lon pont 的 X 英里半径内提取位置
- ios - 从 WidgetKit 小部件扩展检测应用程序启动
- google-apps-script - 只允许将电子表格中的文本提交到谷歌网络应用的文本字段中
- r - 在 R 中为 logit 模型使用边距函数的“at”参数
- python-3.x - 将用户输入转换为更改输入持续时间的布尔值的时间?
- stat - 通过 RSEM 分析获得的关于 XXX.cnt 的信息
- github - 如何使用 Github Actions 进行 SFTP?
- javascript - 尝试在javascript中生成消息时由于某种原因在我的代码中解析错误
- android - 在通知通道上设置声音不会播放我的自定义声音(而是播放另一种声音)