Разделяне на низ с множество разделители в Python

Намерих някои отговори онлайн, но нямам опит с регулярните изрази, които според мен са необходими тук.

Имам низ, който трябва да бъде разделен или с ';' или с ', ' Това означава, че трябва да бъде или точка, или запетая, последвана от интервал. Отделните запетаи без завършващи интервали трябва да се оставят без промяна

Примерен низ:

"b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3], mesitylene [000108-67-8]; polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]"

трябва да бъде разделен на списък, съдържащ следното:

('b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3]' , 'mesitylene [000108-67-8]', 'polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]') 
Решение

За щастие, Python има вградена такава функция :)

import re
re.split('; |, ',str)

Актуализация:
След вашия коментар:

>>> a='Beautiful, is; better*than\nugly'
>>> import re
>>> re.split('; |, |\*|\n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
Коментари (9)

Направете str.replace('; ', ', ') и след това str.split(', ')

Коментари (7)

Ето как изглежда регексът:

import re
# "semicolon or (a comma followed by a space)"
pattern = re.compile(r";|, ")

# "(semicolon or a comma) followed by a space"
pattern = re.compile(r"[;,] ")

print pattern.split(text)
Коментари (1)