Повторная компиляция Python и шаблоны REGEX для очистки вариаций имен.Python

Программы на Python
Anonymous
Повторная компиляция Python и шаблоны REGEX для очистки вариаций имен.

Сообщение Anonymous »

Мне нужна помощь с шаблоном REGEX, который поможет мне очистить имена, оставив только первое, последнее и суффикс. Он должен иметь возможность обрабатывать следующие варианты.
  • Удаляет любые отчества
  • Сохраняет фамилию, если таковая имеется
  • Удаляет любые псевдонимы
  • Удаляет любые девичьи или мертвые имена, стандартный формат (name-)
  • Суффиксы сохраняются без знаков препинания. Всегда следует после фамилии.
  • Не сохраняет дворянских титулов. Всегда следует \s после фамилии.
Сара Мишель Геллар -> Сара Геллар
Лесли Мари ДеГузман Санторини -> Лесли Санторини
Бейонсе -> Бейонсе
Стефани «Леди Гага» Джерманотта -> Стефани Джерманотта
Леброн Джеймс-младший -> Леброн Джеймс-младший
Хейли Бибер (Болдуин-) -> Хейли Бибер
Шания (Ирен-) Твейн -> Шанайа Твен
Чарльз «Чаз» Флаффи Вонг, герцог Кэттаун -> Чарльз Вонг
Я попробовал несколько разных REGEX шаблоны и не могу понять, как один шаблон может соответствовать всем этим случаям. Ниже представлена ​​моя последняя попытка.

Код: Выделить всё

re_names = re.compile(r'''^
\s*
(?P[a-zA-Z.'\-]+)
(?P(\s[a-zA-Z.'"\-\(\)]+)*)?
(?P\s[a-zA-Z.'\-]+)?
(?P(\s\([a-zA-Z,.'"\-]+\)*))?
(,\s)?
(?P([a-zA-Z'\-]+)*)?
.*
$
''',
re.VERBOSE)
К сожалению, в этом шаблоне все имена после имени помещаются как отчества. Он также фиксирует "Duke" в качестве суффикса для окончательного тестового примера, когда он не должен возвращать суффикс.
Я также рассматривал возможность использования отдельной re.compile с отдельными шаблонами REGEX, но до сих пор не могу найти способ успешно зафиксировать все случаи.

Вернуться в «Python»