Я предполагаю, что, возможно, вы пытаетесь re.sub
назвать пары, для которых вы, вероятно, можете написать выражение, похожее на:
([A-Z][a-z]+)\s+and\s+(.*)([A-Z]\S*)
, если у вас нет краевых случаев,если вы сделаете это, вы, вероятно, захотите изменить классы символов [A-Z]
и добавить туда другие символы.
Тест
import re
l = ['George Rosario, Ali Jones, Barbara Boll, and Lindsay McKelvoy', 'Jan and Edgar Adelman', 'Bill Mack and Les Lieberman', 'Dr. Susan Muehle-Bussel, Ray Morales, and Dr. Samuel Barker', 'Dan Barroso and Emily High', 'Cassie and George Sorenson', 'Tom Scott and Mark Smith', 'The scene at IDEAL School & Academy’s 10th\xa0Annual Gala.',
'Les Lieberman, Barri Lieberman, Isabel Kallman, Trish Iervolino, and Ron Iervolino', 'Chuck Grodin', 'Diana Rosario, Ali Sussman, Sarah Boll, Jen Zaleski, Alysse Brennan, and Lindsay Macbeth', 'Kelly and Tom Murro', 'Udo Spreitzenbarth', 'Ron Iervolino, Trish Iervolino, Russ Middleton, and Lisa Middleton', 'Barbara Loughlin, Dr. Gerald Loughlin, and Debbie Gelston', 'Julianne Michelle']
e = r'([A-Z][a-z]+)\s+and\s+(.*)([A-Z]\S*)'
l_out = []
for names in l:
if re.match(e, names):
l_out.append(re.sub(e, r'\1 \3 and \2\3', names))
else:
l_out.append(names)
print(l_out)
Вывод
['Джордж Росарио, Али Джонс, Барбара Болл,и Линдсей МакКелвой »,« Ян Адельман и Эдгар Адельман »,« Билл Мак и Ле Либерман »,« ДокторСьюзен Мюле-Бассель, Рэй Моралес и доктор Сэмюэл Баркер »,« Дэн Баррозу и Эмили Хай »,« Кэсси Соренсон и Джордж Соренсон »,« Том Скотт и Марк Смит »,« Сцена в 10-й ежегодной школе IDEAL School & Academy »Gala. ',' Les Lieberman, Барри Либерман, Изабель Каллман, Триш Иерволино и Рон Иерволино ',' Чак Гродин ',' Диана Росарио, Али Суссман, Сара Болл, Джен Залески, Алиссе Бреннан и Линдсей Макбет ',' КеллиМурро и Том Мурро »,« Udo Spreitzenbarth »,« Рон Иерволино, Триш Иерволино, Русс Миддлтон и Лиза Миддлтон »,« Барбара Лафлин, доктор Джеральд Лафлин и Дебби Гелстон »,« Джулианна Мишель »]
Или вы можете попробовать
import re
l = ['George Rosario, Ali Jones, Barbara Boll, and Lindsay McKelvoy', 'Jan and Edgar Adelman', 'Bill Mack and Les Lieberman', 'Dr. Susan Muehle-Bussel, Ray Morales, and Dr. Samuel Barker', 'Dan Barroso and Emily High', 'Cassie and George Sorenson', 'Tom Scott and Mark Smith', 'The scene at IDEAL School & Academy’s 10th\xa0Annual Gala.',
'Les Lieberman, Barri Lieberman, Isabel Kallman, Trish Iervolino, and Ron Iervolino', 'Chuck Grodin', 'Diana Rosario, Ali Sussman, Sarah Boll, Jen Zaleski, Alysse Brennan, and Lindsay Macbeth', 'Kelly and Tom Murro', 'Udo Spreitzenbarth', 'Ron Iervolino, Trish Iervolino, Russ Middleton, and Lisa Middleton', 'Barbara Loughlin, Dr. Gerald Loughlin, and Debbie Gelston', 'Julianne Michelle']
e = r'([A-Z][a-z]+)\s+and\s+(.*)([A-Z]\S*)'
l_out = []
for names in l:
if re.match(e, names):
l_out.append(re.sub(e, r'\1 \3', names))
l_out.append(re.sub(e, r'\2\3', names))
else:
l_out.append(names)
print(l_out)
Вывод
['Джордж Росарио, Али Джонс, Барбара Болл и Линдсей МакКелвой', 'Ян Адельман' ', «Эдгар Адельман», «Билл Мак и Ле Либерман», «ДокторСьюзен Мюле-Бассель, Рэй Моралес и доктор Сэмюэл Баркер, «Дэн Баррозу и Эмили Хай», «Кэсси Соренсон», «Джордж Соренсон», «Том Скотт и Марк Смит», «Сцена в школе IDEAL и Академии 10-го числа»\ xa0 Ежегодный гала. ',' Ле Либерман, Барри Либерман, Изабель Каллман, Триш Иерволино и Рон Иерволино ',' Чак Гродин ',' Диана Росарио, Али Суссман, Сара Болл, Джен Залески, Алиссе Бреннан и Линдсей Макбет '«Келли Мурро», «Том Мурро», «Удо Спрайтенбарт», «Рон Иерволино, Триш Иерволино, Русс Миддлтон и Лиза Миддлтон», «Барбара Лафлин, доктор Джеральд Лафлин и Дебби Гелстон», «Джулианна Мишель»]
Если вы хотите упростить / изменить / изучить выражение, это было объяснено на верхней правой панели regex101.com .Если хотите, вы можете также посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами ввода.