我需要使用正则表达式将字符串中每个单词的第一个字母大写:
>>> import re
>>> re.sub(r"\b(\S)", (r"\1").upper(), "foo bar")
'foo bar'
我希望结果是“Foo Bar”。
我尝试过title方法和string.capwords,但两者都有如下所示的问题:
>>> import string
>>> string.capwords("foo bar 1a ")
'Foo Bar 1a'
>>> "1a".title()
1A
使用lambda表达式作为@Sebastian建议在下面的评论中为我工作。
答案 0 :(得分:1)
如果您正在寻找正则表达式解决方案,re.sub
函数可以接收函数作为第二个参数:
>>> def t(x):
... if x:
... return x.group(0).upper()
>>> re.sub(r"\b(\S)", t, "foo bar")
'Foo Bar'
>>> re.sub(r"\b(\S)", t, "1foo bar")
'1foo Bar'
答案 1 :(得分:1)
这似乎也有效:
import string
' '.join([string.capitalize(word) for word in 'foo bar 1a '.split(' ')])
输出:
'Foo Bar 1a '