我有一个文本文件,从中提取了这两个段落块。文例如下:
文本示例:
NOMEAR ISABELLE FERREIRA ZARONI,ID Funcional . 5100796-7,para,com validade a contar de 16 de novembro de 2020,o cargo em comiss o de Assessor,símbolo DAS-7
E 212,daE 113Sub-contar de Parcerias e ParceriasE214,da SE 115ecretaria de Estado de Planejamentoe Gest o e Gest o,anteriormente代码或<<117/>Vinicius代码<28-218<<5108029>代码<<5108029>代码>1 2 0 0 1/0 1 4 6 11 /2 0 2 0.NOMEARKARINE MATOS DIAS,ID Funcional .5092869-4para,com validade ade 16 de novembro de 2020,o cargo em comiss o de Assessor,símbolo DAS-7E 232,da E 133秘书para de Estado de PlanejamentoE 234e Gest o,anteriormente por E 135por- ra do Carmo>E 236,ID FUNCIONAL n<>E137>E137>代码>>E 5099579>代码<><238><><>。1 2 0 0 1/0 1 4 6 11 /2 0 2 0 .
在上面的文本块中,我只想将粗体值作为一个单独的行从每个段落中获取。
我已经尝试过的
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()也有问题,而且有时这种静态替换也破坏了我的代码。那么,还有其他方法可以使用regex匹配来实现这些粗体文本吗?
发布于 2020-11-27 13:01:31
要获得粗体中的值,可以使用三个具有交替的捕获组:
\b(?:(?:NOMEAR|d[ea]|por) ([^,]+?)(?: e Gestão)?,|([A-Z\d]+-\d+)|SEI- ([\d /]+)\b)各部分
\b用于防止单词成为较长单词的一部分的单词边界(?:非捕获群(?:NOMEAR|d[ea]|por)匹配NOMEAR de da por之一([^,]+?)捕获组1,匹配除,以外的任何字符(?: e Gestão)?,可选择匹配e Gestão和,|或([A-Z\d]+-\d+)捕获在组2中匹配的1+乘以A-Z或A位数以及-和1+位数|或SEI- ([\d /]+)\b匹配SEI-,捕获在组3中列出的后跟单词边界)闭非捕获群例如
import re
regex = r"\b(?:(?:NOMEAR|d[ea]|por) ([^,]+?)(?: e Gestão)?,|([A-Z\d]+-\d+)|SEI- ([\d /]+)\b)"
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:
result = []
matches = re.finditer(regex, i, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
if match.group(groupNum) is not None:
result.append(match.group(groupNum))
print(result)输出
['ISABELLE FERREIRA ZARONI', '5100796-7', '16 de novembro\nde 2020', 'Assessor', 'DAS-7', 'Sub-\nsecretaria de Concessões e Parcerias', 'Secretaria de Estado de\nPlanejamento', 'Vinicius dos San-\ntos Silva', '5108029-0']
['KARINE MATOS DIAS', '5092869-4', '16 de novembro de 2020', 'Assessor', 'DAS-7', 'Secretaria de Estado\nde Planejamento', 'Amauri Ferrei-\nra do Carmo', '5099579-0']
['ROSIONE FERNANDES DE SÁ', '4413710-9', '16 de novembro\nde 2020', 'Assistente II', 'DAI-6', 'Estado de Planejamento', 'Luis Henrique Ferreira de Aquino', 'SEI-120001']
['FRANCISCO DE ASSIS PINTO CAVALCANTE para exer-\ncer', '16 de novembro de 2020', 'Assistente II', 'DAI-6', 'Secretaria de Estado de\nPlanejamento', 'Edson Carneiro\nda Silva', '570136-8']https://stackoverflow.com/questions/65034030
复制相似问题