Séparation d'une chaîne avec plusieurs délimiteurs en Python

J'ai trouvé quelques réponses en ligne, mais je n'ai aucune expérience des expressions régulières, ce qui est, je crois, ce dont on a besoin ici.

J'ai une chaîne qui doit être séparée par un ';&#39 ; ou &#39 ;, &#39 ; C'est-à-dire qu'il doit s'agir soit d'un point-virgule, soit d'une virgule suivie d'un espace. Les virgules individuelles sans espace de queue doivent être laissées intactes.

Exemple de chaîne de caractères :

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

doit être divisée en une liste contenant les éléments suivants :

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

Heureusement, Python intègre cette fonctionnalité :)

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

Mise à jour:
Suite à votre commentaire :

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

Faites un str.replace(' ; &#39 ;, &#39 ;, &#39 ;) et ensuite un str.split(&#39 ;, &#39 ;).

Commentaires (7)

Voici à quoi ressemblent les regex :

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