# nameparse1.py
# Written by Todd Wareham for CS 2500
"""
Given the name of a textfile of proper names (one per line) consisting
 of a last name and a first name composed of up to three first names and/or
 initials as a command-line argument, print breakdown of each proper
 name in given file by first name(s) and last name.
"""

import sys
import re

if len(sys.argv) != 2:
    print "usage: ", sys.argv[0], " name-file"
    sys.exit(1)

lastNameP   = "([A-Z][a-z]+)"
firstNameP  = r"([A-Z]\.|[A-Z][a-z]+)"
firstNamesP = firstNameP + "(?: " + firstNameP + ")?" + "(?: " + firstNameP + ")?"
nameP       = lastNameP + ", " + firstNamesP
r = re.compile(nameP)

for line in file(sys.argv[1]):
    m = r.match(line)
    lastName = m.group(1)
    firstNames = m.group(2)
    if m.group(3) != None:
        firstNames += (" " + m.group(3))
        if m.group(4) != None:
            firstNames += (" " + m.group(4))
    print "Name breakdown of \"", line.rstrip(), "\":"
    print "  FIRSTNAME(S): ", firstNames
    print "      LASTNAME: ", lastName

