To solve your stated problem narrowly, I think you may find string.capwords()
useful. It encapsulates the split -> capitalize -> join sequence into a single command.
>>> address = "SOUTH 16TH STREET"
>>> capwords(address)
'South 16th Street'
See more info on that command in Python 3.4 at...
https://docs.python.org/3.4/library/string.html#string-functions
It also exists in earlier versions of Python.
However, broadening your question to address formatting generally, you may run into trouble with this simplistic approach. More complex (e.g. regex-based) approaches may be required. Using an example from my locale:
>>> address = "Highway 99N" # Wanting'Highway 99N'
>>> capwords(address)
'Hwy 99n'
Address parsing (and formatting) is a wicked problem due to the amount of variation in legitimate addresses as well as the different ways people will write them (abbreviations, etc.).
The pyparsing module might also be a way to go if you don't like the regex approach.