Я получил строку такого формата:
"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', '']
Нечетные элементы здесь - имена актеров, даже роли. Затем я мог бы разбить имена запятыми и каким-то образом извлечь парную роль имени. Но это кажется еще хуже, чем мой первый подход.
Есть ли какие-либо более простые/более приятные способы сделать это, либо с одним регулярным выражением, либо с хорошим кодом?