Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式从文本文件中提取文本块?_Python_Regex_Text_Text Extraction - Fatal编程技术网

Python 正则表达式从文本文件中提取文本块?

Python 正则表达式从文本文件中提取文本块?,python,regex,text,text-extraction,Python,Regex,Text,Text Extraction,我需要使用正则表达式从Python中的文本文件中提取标题和标题下的文本块,但我发现这很困难 我将其转换为文本,因此它现在看起来如下所示: 到目前为止,我已经能够使用以下正则表达式获得所有数字标题(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 =

我需要使用正则表达式从Python中的文本文件中提取标题和标题下的文本块,但我发现这很困难

我将其转换为文本,因此它现在看起来如下所示:

到目前为止,我已经能够使用以下正则表达式获得所有数字标题(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)`
我只是不知道如何得到这些标题的措辞部分或下面的一段文字

编辑-以下是文本:

国际标准EN 60601-1:2006和A1:2013以及AC:2014和A12:2014

60601-1©IEC:2005 60601-1©IEC:2005

-337- -169-

12.4.5.4产生诊断或治疗辐射的其他医用电气设备 适用时,制造商应在风险管理过程中说明 与医用电气设备产生诊断或治疗辐射相关的风险,而非 诊断X射线和放射治疗(见12.4.5.2和12.4.5.3)

通过检查风险管理文件检查合规性

12.4.6诊断或治疗声压 适用时,制造商应在风险管理过程中说明 与诊断或治疗性声压相关的风险

通过检查风险管理文件检查合规性

13*危险情况和故障条件

13.1特定危险情况

  • 一般的
13.1.1 当应用4.7所述和13.2所列的单一故障条件时,一次一个 同时,不得在现场发生13.1.2至13.1.4(含)中的任何危险情况 医用电气设备

任何一个部件一次发生故障,可能导致危险情况,这是非常重要的 如4.7所述

  • 排放、外壳变形或超过最高温度
13.1.2 不得出现以下危险情况: –危险环境中火焰、熔融金属、有毒或可燃物质的排放

数量

–外壳变形,以至于无法遵守15.3.1的规定; –

在以下情况下,应用部件的温度超过表24中规定的允许值: 按11.1.3所述进行测量; 医用电气设备部件的温度,非应用部件,但可能 接触,超过表23中规定的允许值 如11.1.3所述

–超过表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+)*)\s+([\s\S]*?)(?=^\d+(?:\.\d+)*)|^(\d+(?:\.\d+)*)\s+([\s\S]*)
可能有点接近我猜的那些想要的文本


在这里,我们只需寻找以

^(\d+(?:\.\d+)*)\s+
(?=^\d+(?:\.\d+)*)
然后,我们只需使用

([\s\S]*?)
直到下一行开始

^(\d+(?:\.\d+)*)\s+
(?=^\d+(?:\.\d+)*)
然后,我们可能会也可能不会,取决于我们的输入看起来如何,只剩下最后一个元素,我们将使用最后一个元素收集它:

^(\d+(?:\.\d+)*)\s+([\s\S]*)
然后我们将(使用
|
)将其更改为先前的表达式

尽管这种方法很容易编码,但由于我们使用了lookarounds,所以它的性能非常慢,所以如果时间复杂度是一个问题的话,它会更好,这很可能是一个问题

试验 输出 [('12.4.5.4','其他医用电气设备产生诊断或治疗效果 辐射\n适用时,制造商应在 风险管理过程\n包含与我相关的风险 产生诊断或治疗辐射的设备,而非 \诊断X射线和放射治疗(见12.4.5.2和12.4.5.3)。 \n\n通过检查风险管理系统来检查是否符合要求 文件。\n\n','',('12.4.6','诊断或治疗声学 压力\n如果适用,制造商应在 风险管理过程\n包含与诊断相关的风险 或治疗性声压。\n\n通过 检查风险管理文件。\n\n','',('13','* 危险情况和故障条件\n\n','',('13.1', '特定危险情况\n\n*一般\n\n','',', ('13.1.1','当应用单一故障条件时 4.7中描述,13.2中列出,一次一个,无 13.1.2至13.1.4(含)中的危险情况 应发生在\nME设备中。\n\n任何一个设备的故障 一次可能导致危险情况的部件 \未在4.7中描述。\n\n*排放、外壳变形或 超过最高温度\n\n','',('','13.1.2',' 不得出现以下危险情况:\n–排放 火焰、熔融金属、有毒或可燃物质 危险性\n\n危险性;\n\n–外壳变形到这种程度 遵守15.3.1的程度受损;\n–\n\n温度 超过中规定的允许值的应用零件数量 表24当按照11.1.3所述进行测量时;\n的温度 医用电气设备部件,非应用部件,但为li
(^\d+(?:\.\d+)*\s+)((?![a-z])[\s\S].*(?:\r?\n))([\s\S]*?)(?=^\d+(?:\.\d+)*\s+(?![a-z]))