import re
a = [
"Mr: Smith",
"Mr: Smith; John",
"Smith",
"Smith; John"
]
r = r"^(?:([^:]+):\W*)?([^;]+)(?:;\W*(.+))?"
def repl(m):
return (m.group(1) or "title" ) + "," + m.group(2) + "," + (m.group(3) or "fname")
for s in a:
print re.sub(r, repl, s)
aW1wb3J0IHJlCgphID0gWwoJIk1yOiBTbWl0aCIsCgkiTXI6IFNtaXRoOyBKb2huIiwKCSJTbWl0aCIsCgkiU21pdGg7IEpvaG4iCl0KciA9IHIiXig/OihbXjpdKyk6XFcqKT8oW147XSspKD86O1xXKiguKykpPyIKCmRlZiByZXBsKG0pOgoJcmV0dXJuIChtLmdyb3VwKDEpIG9yICJ0aXRsZSIgKSArICIsIiArIG0uZ3JvdXAoMikgKyAiLCIgKyAobS5ncm91cCgzKSBvciAiZm5hbWUiKQoKZm9yIHMgaW4gYToKCXByaW50IHJlLnN1YihyLCByZXBsLCBzKQ==
Mr,Smith,fname
Mr,Smith,John
title,Smith,fname
title,Smith,John