def full_name_natural_split(full_name):
parts = full_name.strip().split('<STR_LIT:U+0020>')<EOL>first_name = "<STR_LIT>"<EOL>if parts:<EOL><INDENT>first_name = parts.pop(<NUM_LIT:0>)<EOL><DEDENT>if first_name.lower() == "<STR_LIT>" and parts:<EOL><INDENT>first_name += "<STR_LIT:U+0020>" + parts.pop(<NUM_LIT:0>)<EOL><DEDENT>last_name = "<STR_LIT>"<EOL>if parts:<EOL><INDENT>last_name = parts.pop()<EOL><DEDENT>if (last_name.lower() == '<STR_LIT:i>' or last_name.lower() == '<STR_LIT>'<EOL>or last_name.lower() == '<STR_LIT>' and parts):<EOL><INDENT>last_name = parts.pop() + "<STR_LIT:U+0020>" + last_name<EOL><DEDENT>middle_initials = "<STR_LIT>"<EOL>for middle_name in parts:<EOL><INDENT>if middle_name:<EOL><INDENT>middle_initials += middle_name[<NUM_LIT:0>]<EOL><DEDENT><DEDENT>return first_name, middle_initials, last_name<EOL>
This function splits a full name into a natural first name, last name
and middle initials.