使用regex从存储在字符串列表中的字符串中删除2个或更多连续的非大写单词,并将

c0vxltue  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(130)
import re

list_with_penson_names_in_this_input = ["María Sol", "María del Carmen Perez Agüiño", "Melina Saez Sossa", "el de juego es Alex" , "Harry ddeh jsdelasd Maltus ", "Ben White ddesddsh jsdelasd Regina yáshas asdelas Javier Ruben Rojas", "Robert", 'Melina presento el nuevo presupuesto', "presento el nuevo presupuesto, María del Carmén "]

aux_list = []

for i in list_with_penson_names_in_this_input:
    list_with_penson_names_in_this_input.remove(i)
    aux_list = re.sub(, , i)
    list_with_penson_names_in_this_input = list_with_penson_names_in_this_input + aux_list
    aux_list = []
    

print(list_with_penson_names_in_this_input) #print fixed name list

如果在一行中有超过2个单词((?:\w\s*)+)不是以大写字母开头,并且不是[del|de el|de]类型的连接符,则应该从检测到的大写字母的第一个名称中删除它,并且检测到第二个名称(如果存在),将其作为列表中的单独元素。例如,
["Harry ddeh jsdelasd Maltus "] --〉["Harry", "Maltus"]
["Ben White ddesddsh jsdelasd Regina yáshas asdelas Javier Ruben Rojas"] --〉["Ben White", "Regina", "Javier Ruben Rojas"]
如果名称不超过一个,则应删除两个或多个不以大写字母开头且不是[del|de el|de]类型连接符的连续单词
["Melina Martinez presento el nuevo presupuesto"] --〉["Melina Martinez"]
["Melina presento el nuevo presupuesto"] --〉["Melina"]
["presento el nuevo presupuesto, María del Carmén "] --〉["María del Carmén"]
当涉及到修复那些不符合规范的元素时,此列表中的元素应该是:

["María Sol", "María del Carmen Perez Agüiño", "Melina Saez Sossa", "Alex" , "Harry", "Maltus", "Ben White", "Regina", "Javier Ruben Rojas", "Robert", 'Melina', "María del Carmén"]

对于中间不以大写字母开头的单词,我尝试了类似((?:\w\s*)+)的方法,但即使这样,它也不会限制是否存在大写字母单词

dffbzjpn

dffbzjpn1#

匹配以小写字母开头且连续两个或两个以上的单词,并使用re.split拆分匹配的单词。

import re

name_lst = ["María Sol", "María del Carmen Perez Agüiño", "Melina Saez Sossa",
            "el de juego es Alex", "Harry ddeh jsdelasd Maltus ",
            "Ben White ddesddsh jsdelasd Regina yáshas asdelas Javier Ruben Rojas",
            "Robert", 'Melina presento el nuevo presupuesto',
            "presento el nuevo presupuesto, María del Carmén "]

cleaned_names = []
for i in name_lst:
    data = re.split(r"(?:\b[a-z]\S+\s){2,}(?:[a-z]+$)?", i)
    cleaned_names.extend(data)

output = [i.strip() for i in cleaned_names if i]
print(output)

>>> ['María Sol', 'María del Carmen Perez Agüiño', 'Melina Saez Sossa', 'Alex', 'Harry', 'Maltus', 'Ben White', 'Regina', 'Javier Ruben Rojas', 'Robert', 'Melina', 'María del Carmén']

相关问题