仅仅因为这种事情对我来说很有趣,这里还有两个解决方案。
分成单词,从分组中初始化每个单词,然后重新加入。这将改变将单词分隔成单个空白区域的空白区域,无论它是什么。s = 'the brown fox'lst = [word[0].upper() + word[1:] for word in s.split()]s = " ".join(lst)
编辑:当我编写上面的代码时,我不记得我在想什么,但是没有必要建立一个明确的列表; 我们可以使用生成器表达式以懒惰的方式执行它。所以这是一个更好的解决方案:s = 'the brown fox's = ' '.join(word[0].upper() + word[1:] for word in s.split())
使用正则表达式匹配字符串的开头,或分隔单词的空格,以及单个非空白字符; 使用括号标记“匹配组”。编写一个带有匹配对象的函数,并返回未更改的空白匹配组和以大写字母表示的非空白字符匹配组。然后re.sub()用来替换图案。这个没有第一个解决方案的标点符号问题,也不像我的第一个解决方案那样重做白色空间。这个产生最好的结果。import re
s = 'the brown fox'def repl_func(m):
"""process regular expression match groups for word upper-casing problem"""
return m.group(1) + m.group(2).upper()s = re.sub("(^|\s)(\S)", repl_func, s)>>> re.sub("(^|\s)(\S)", repl_func, s)"They're Bill's Friends From The UK"
我很高兴我研究了这个答案。我不知道re.sub()可以采取功能!您可以在内部re.sub()进行非平凡处理以产生最终结果!