def splitname(s):
return [*s.split(maxsplit=2), '-', '-', '-'][:3]
print('{}\n{}\n{}\n'.format(*splitname('')))
print('{}\n{}\n{}\n'.format(*splitname('Жуков')))
print('{}\n{}\n{}\n'.format(*splitname('Жуков Ванька')))
print('{}\n{}\n{}\n'.format(*splitname('Мергалиева Магомеда Ихтияр оглы')))
Для каждой группы есть условия возможных сочетаний подгрупп (кол-во условий около 20. То есть подгруппы могут создаваться на основе одного или нескольких из условий, а не на сумме всех 20-ти условий)