str.title() fails with words containing apostrophes

MRAB python at mrabarnett.plus.com
Sun Mar 5 14:38:54 EST 2017


On 2017-03-05 17:54, Steve D'Aprano wrote:
> I'm trying to convert strings to Title Case, but getting ugly results if the
> words contain an apostrophe:
>
>
> py> 'hello world'.title()  # okay
> 'Hello World'
> py> "i can't be having with this".title()  # not okay
> "I Can'T Be Having With This"
>
>
> Anyone have any suggestions for working around this?
>
A bit of regex?

import re

def title(string):
     return re.sub(r"\b'\w", lambda m: m.group().lower(), string.title())



More information about the Python-list mailing list