我使用的是Python,并使用以下正则表达式从文本文件中提取文本:

    pattern = r'\bItem\s+5\.02\s*([\w\W]*?)(?=\s*(?:Item\s+[89]\.01|Item\s+5\.03|Item\s+5\.07|SIGNATURES|SIGNATURE|Pursuant to the requirements of the Securities Exchange Act of 1934)\b)'

    pd_00['important_text'] = pd_00['text'].str.extract(pattern, re.IGNORECASE, expand=False)

我的问题具体是关于最后一个术语,"根据1934年证券交易法的要求".在文本文件中,这句话有时是随机间隔的,并以新行开始句子的不同部分.我该如何解释这种随机性呢?现在,只有当它以均匀、正常的间距写入时,它才会拾取它.

推荐答案

首先,注意你的图案太过冗长,你可以缩小一些部分:

Item\s+[89]\.01|Item\s+5\.03|Item\s+5\.07  =>  Item\s+(?:[89]\.01|5\.0[37])
SIGNATURES|SIGNATURE                       =>  SIGNATURES?

SIGNATURES?匹配SIGNATURESSIGNATURE,因为S?匹配一个或零S个字符.

因此,现在,按照指示重新调整图案,并将图案中的空格替换为\s+:

pattern = r'\bItem\s+5\.02\s*([\w\W]*?)(?=\s*(?:Item\s+(?:[89]\.01|5\.0[37])|SIGNATURES?|Pursuant\s+to\s+the\s+requirements\s+of\s+the\s+Securities\s+Exchange\s+Act\s+of\s+1934)\b)'

请看regex demo.

Python相关问答推荐

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

查找两极rame中组之间的所有差异

发生异常:TclMessage命令名称无效.!listbox"

Stacked bar chart from billrame

pandas:排序多级列

改进大型数据集的框架性能

删除marplotlib条形图上的底边

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

Pandas Data Wrangling/Dataframe Assignment

如何更改groupby作用域以找到满足掩码条件的第一个值?

如何获取Python synsets列表的第一个内容?

为什么我的sundaram筛这么低效

用两个字符串构建回文

如果有2个或3个,则从pandas列中删除空格

如何在FastAPI中替换Pydantic的constr,以便在BaseModel之外使用?'

语法错误:文档. evaluate:表达式不是合法表达式

仅使用预先计算的排序获取排序元素

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

来自Airflow Connection的额外参数

正则表达式反向查找