【发布时间】:2016-12-28 06:48:58
【问题描述】:
我需要使用正则表达式将字符串中每个单词的首字母大写:
>>> 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
使用@Sebastian 在下面的评论中建议的 lambda 表达式对我有用。
【问题讨论】:
-
有必要使用正则表达式吗?你能用“foo bar”.title()吗?
-
我试过了,但是当第一个字符是数字时,标题似乎无法正常工作。例如,我希望“1a”保持不变,但“1a”.title() 返回“1A”
-
@WesDoyle @Anand 试试
string.capwords -
您可以使用函数/lambda 进行替换,例如
re.sub(r"\b(\S)", lambda x: x.group().upper(), "foo bar")