使用正则表达式在Python中从段落块中提取所需的字段值。

48 浏览
0 Comments

使用正则表达式在Python中从段落块中提取所需的字段值。

我有一个文本文件,我从中提取了这两个段落块。以下是文本示例。

文本示例:

解雇,自2020年8月19日起生效,解雇尼尔森·德布里托·利马,职务标识号2100423-4,解散协调员的委任职务,符号DAS-8,由物流副秘书集中管理协调处计划和管理国家秘书集中管理超级局。流程号

SEI-120001/010643/2020

辞职,纳迪娅·中村·维埃拉,职务标识号5099589-8,解散特别顾问的委任职务,符号DG,由计划和管理国家秘书。流程号SEI-150001/004627/2020

解雇,自2020年11月26日起生效,解雇布鲁诺·拉斐尔·罗查·科斯塔,职务标识号5108093-1,解散顾问的委任职务,符号DAS-7,来自总统的计划和管理顾问,里约热内卢州立体育总局-SUDERJ,体育、休闲和青年国务秘书。流程号SEI-

3 0 0 0 0 2 / 0 0 0 4 11 / 2 0 2 0 .

解雇,自2020年11月16日起生效,解雇路易斯·恩里克·费雷拉·德·阿基诺,职务标识号1914315-0,解散助理II的委任职务,符号DAI-6,来自计划和管理国家秘书。流程号SEI120001/014825/2020

我想从上面的文本块中仅获取每个段落中的粗体值,作为单独的行。

我尝试过的:

r"\b(?:(?:解雇|d[ae]|por|符号)\s([^,]+?)(?: e Gestão)?,|\b(?!SEI\b)([A-Z\d]+-\s*\d+)|SEI-\s*([\d /]+)\b)"

我的当前输出:

https://regex101.com/r/FCimoW/1

我的当前输出基本上可以,但是存在一个问题,即无法匹配所有所需的部分,例如大写的姓名部分。

0
0 Comments

问题的原因是需要使用正则表达式从段落块中提取所需字段的值。解决方法是使用正则表达式来匹配所需的字段。

解决方法中提到了一个正则表达式模式:\b([A-Z]+(?:[\s-]+[A-Z]+)+(?=,),它可以匹配以逗号结尾的一个或多个大写字母单词,这些单词之间可以用空格字符或连字符分隔。

另外,还提到了一个问题,即正则表达式[A-Z]+可以捕获大写的英文字母,但不能捕获国际字符。解决方法是使用\p{Lu}来匹配大写字母,但在Python中这种写法是无效的,会导致错误sre_constants.error: bad escape \p at position 113。然后提到了安装PyPi regex模块以解决这个问题的方法。

最后,提到了使用regex模块后问题得到解决,并提供了一个链接以供参考。

通过使用正则表达式,我们可以解决从段落块中提取所需字段值的问题。

0