Я бы использовал регулярные выражения:
>>> import re
>>> exp = re.compile('(\w+\.\w+)|(\w+,\s?\w+)')
>>> map(exp.findall, abc)
[[('', 'adams, brian')], [('', 'smith, will')], [('j.smith', '')], [], [], []]
Функциональный способ выравнивания этого результата:
>>> r = map(exp.findall, abc)
>>> filter(None, sum(sum(r, []), ()))
('adams, brian', 'smith, will', 'j.smith')