Cadeia dividida com múltiplos delimitadores em Python

Encontrei algumas respostas online, mas não tenho experiência com expressões regulares, o que acredito ser o que é necessário aqui.

Eu tenho um fio que precisa ser dividido por ';' ou ', ' Ou seja, tem de ser um ponto-e-vírgula ou uma vírgula seguida de um espaço. As vírgulas individuais sem espaços de arrasto devem ser deixadas intocadas

Exemplo de cadeia:

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

deve ser dividida em uma lista contendo o seguinte:

('b-staged divinylsiloxane-bis-benzocyclobutene [124221-30-3]' , 'mesitylene [000108-67-8]', 'polymerized 1,2-dihydro-2,2,4- trimethyl quinoline [026780-96-1]') 
Solução

Felizmente, Python tem isto embutido :)

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

Update:
Após o seu comentário:

>>> a='Beautiful, is; better*than\nugly'
>>> import re
>>> re.split('; |, |\*|\n',a)
['Beautiful', 'is', 'better', 'than', 'ugly']
Comentários (9)

Faça um str.replace('; ', ', ') e depois um str.split(', ')

Comentários (7)

É assim que o regex se parece:

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)
Comentários (1)