Я получил строку такого формата:
"Wilbur Smith (Billy, son of John), Eddie Murphy (John), Elvis Presley, Jane Doe (Jane Doe)"
так что в основном это список имен актеров (за которыми может следовать их роль в скобках). Сама роль может содержать запятую (имя актера не может, я очень на это надеюсь).
Моя цель - разбить эту строку на список пар - (actor name, actor role)
.
Одним из очевидных решений было бы пройти через каждый символ, проверить наличие '('
, ')'
и ','
и разделить его всякий раз, когда запятая встречается снаружи. Но это кажется немного тяжелым ...
Я думал о том, чтобы разделить его с помощью регулярного выражения: сначала разделить строку по скобкам:
import re
x = "Wilbur Smith (Billy, son of John), Eddie Murphy (John), Elvis Presley, Jane Doe (Jane Doe)"
s = re.split(r'[()]', x)
# ['Wilbur Smith ', 'Billy, son of John', ', Eddie Murphy ', 'John', ', Elvis Presley, Jane Doe ', 'Jane Doe', '']
Нечетные элементы здесь - это имена актеров, даже роли. Затем я мог бы разделить имена по запятым и каким-то образом извлечь пары имя-роль. Но это кажется еще хуже, чем мой первый подход.
Существуют ли более простые / приятные способы сделать это, либо с помощью одного регулярного выражения, либо с помощью небольшого фрагмента кода?