Fixing Python’s title Function
Python’s title function has some weird side-effects when you’re titlizing a string like, for example, a street name:
>>> "62nd".title() "62Nd" >>> "West 62nd st.".title() "West 62Nd St."
Here’s how you can fix this:
import re def fixed_title(input_string): parts = re.split(r'\s', input_string) for idx, value in enumerate(parts): if re.match(r'[A-Za-z]', value[0]): parts[idx] = value[0].upper() + value[1:] return ' '.join(parts)
A simple fix that produces the right result:
>>> fixed_title("West 62nd st.") "West 62nd St."