Delt streng med flere skilletegn i Python

Jeg fant noen svar på nettet, men jeg har ingen erfaring med regulære uttrykk, som jeg tror er det som trengs her.

Jeg har en streng som må deles med enten et ';' eller ', ' Det vil si at det enten må være et semikolon eller et komma etterfulgt av et mellomrom. Enkeltstående kommaer uten etterfølgende mellomrom skal stå urørt.

Eksempel på streng:

"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ør deles opp i en liste som inneholder følgende:

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

Heldigvis har Python dette innebygd :)

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

Oppdatering:
Etter din kommentar:

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

Gjør en str.replace('; ', ', ') og deretter en str.split(', ').

Kommentarer (7)

Slik ser regexen ut:

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)
Kommentarer (1)