Регулярные выражения являются мощными, и, вероятно, путь сюда; но для чего-то такого простого, строковые методы тоже подойдут. Вот краткое решение:
[s.strip() for s in s1.replace(',', ';').split(';')]
Тестовый вывод:
>>> s1 = "billg@microsoft.com,steve@apple.com, dhh@37signals.com"
>>> s2 = " billg@microsoft.com;steve@apple.com; dhh@37signals.com "
>>> print [s.strip() for s in s1.replace(',', ';').split(';')]
['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']
>>> print [s.strip() for s in s2.replace(',', ';').split(';')]
['billg@microsoft.com', 'steve@apple.com', 'dhh@37signals.com']