【发布时间】:2020-11-27 08:22:13
【问题描述】:
我有一个文本文件,从中我提取了这两个段落块。文本示例如下:
文本示例:
NOMEAR ISABELLE FERREIRA ZARONI,ID FUNCIONAL Nº 5100796-7, para exercer, com validade a contar de 16 de novembro de 2020, o cargo em comissão de Assessor, símbolo DAS-7,达 Sub-secretaria de Concessões e Parcerias, da Secretaria de Estado de Planejamento e Gestão, anteriormente ocupado por Vinicius dos Santos Silva,ID Funcional n° 5108029-0。处理器 nº SEI- 1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .
NOMEAR KARINE MATOS DIAS,ID FUNCIONAL Nº 5092869-4 段 exercer, com validade a contar de 16 de novembro de 2020, o cargo em comissão de Assessor, símbolo DAS-7, da Secretaria de Estado de Planejamento e Gestão, anteriormente ocupado por Amauri Ferreira do Carmo,ID 功能编号 5099579-0。处理器 nº SEI- 1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .
从上面的文本块中,我只想从每个段落中获取 bold 值作为单独的行。
我的尝试:
filter_data_nomear = ['NOMEAR ISABELLE FERREIRA ZARONI, ID FUNCIONAL Nº\n5100796-7, para exercer, com validade a contar de 16 de novembro\nde 2020, o cargo em comissão de Assessor, símbolo DAS-7, da Sub-\nsecretaria de Concessões e Parcerias, da Secretaria de Estado de\nPlanejamento e Gestão, anteriormente ocupado por Vinicius dos San-\ntos Silva, ID Funcional n° 5108029-0. Processo nº SEI-\n1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .', 'NOMEAR KARINE MATOS DIAS, ID FUNCIONAL Nº 5092869-4 para\nexercer, com validade a contar de 16 de novembro de 2020, o cargo\nem comissão de Assessor, símbolo DAS-7, da Secretaria de Estado\nde Planejamento e Gestão, anteriormente ocupado por Amauri Ferrei-\nra do Carmo, ID Funcional nº 5099579-0. Processo nº SEI-\n1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .', 'NOMEAR ROSIONE FERNANDES DE SÁ, ID FUNCIONAL Nº\n4413710-9, para exercer, com validade a contar de 16 de novembro\nde 2020, o cargo em comissão de Assistente II, símbolo DAI-6, da\nSecretaria de Estado de Planejamento e Gestão, anteriormente ocu-\npado por Luis Henrique Ferreira de Aquino, ID Funcional nº 1914315-\n0. Processo nº SEI-120001/014825/2020.', 'NOMEAR FRANCISCO DE ASSIS PINTO CAVALCANTE para exer-\ncer, com validade a contar de 16 de novembro de 2020, o cargo em\ncomissão de Assistente II, símbolo DAI-6, da Secretaria de Estado de\nPlanejamento e Gestão, anteriormente ocupado por Edson Carneiro\nda Silva, ID Funcional nº 570136-8. Processo nº SEI-\n120001/014825/2020.']
for i in filter_data_nomear:
splited_ini = i.split(',')
splited_ini = list(filter(lambda x: x != 'para exercer', splited_ini))
splited = [x.strip() \
.replace("\n",' ') \
.replace('anteriormente ocupado por ','') \
.replace('para exercer','') \
.replace('anteriormente ocupado por ','') \
.replace('NOMEAR','') \
.replace('o cargo em comissão de ','') \
.replace('ID FUNCIONAL Nº ','') \
.replace('com validade a contar de ','') \
.replace('ID Funcional ','') \
.replace('Processo nº SEI-','') \
.replace('símbolo ','') \
.strip() \
.replace(u"nº",'--') \
.replace('para exer- cer','') \
.strip() for x in splited_ini]
我当前的输出:
['ISABELLE FERREIRA ZARONI', '5100796-7', '16 de novembro de 2020', 'Assessor', 'DAS-7', 'da Sub- secretaria de Concessões e Parcerias', 'da Secretaria de Estado de Planejamento e Gestão', 'Vinicius dos San- tos Silva', 'n° 5108029-0. 1 2 0 0 0 1 / 0 1 4 6 11 / 2 0 2 0 .']
我当前的输出几乎没问题,但是多个replace() 有问题,有时这个静态替换也破坏了我的代码。那么有没有其他方法可以在那些粗体文本上使用正则表达式匹配来实现呢?
【问题讨论】:
-
regex101.com/r/wn5moF/3 你可以试试那个正则表达式,不确定它是否好,因此留下这个作为评论,当你遍历比赛时,你只需要检查第 6 组中的
, -
您可以使用 3 个捕获组来获取所有不同的值
\b(?:(?:NOMEAR|d[ea]|por) ([^,]+?)(?: e Gestão)?,|((?:[A-Z]+|\d+)-\d+)|SEI- ([\d /]+) )regex101.com/r/xN7CYm/1