2

我正在使用这个代码块:

>>> import re
>>> def titlecase(s):
...     return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
...                   lambda mo: mo.group(0)[0].upper() +
...                              mo.group(0)[1:].lower(),
...                   s)
...
>>> titlecase("they're bill's friends.")
"They're Bill's Friends."

它来自 Python 的文档。

如果字符串包含像 'ö' 这样的土耳其字符,则字符串变为

'BöRek'。为了支持所有语言,我应该写什么?

4

2 回答 2

2

通过编译正则表达式来使用 Unicode 字符属性数据库flags=re.UNICODE

def titlecase(s):
    return re.sub(re.compile(r"[\w]+('[\w]+)?", flags=re.UNICODE),
                  lambda mo: mo.group(0)[0].upper() +
                             mo.group(0)[1:].lower(),
                  s)

在 Python 2 上,您需要使用 Unicode 字符串:

>>> print titlecase(u"börek")
Börek
于 2012-12-03T10:28:06.747 回答
1

使用 unicode 字符串,即titlecase(u'börek').

于 2012-12-03T10:23:55.623 回答