为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字符串中每个单词的首字母大写(Python)?

如何将字符串中每个单词的首字母大写(Python)?

qq_花开花谢_0 2019-07-25 19:35:26
如何将字符串中每个单词的首字母大写(Python)?s = 'the brown fox'......在这里做点什么......s 应该 :'The Brown Fox'最简单的方法是什么?
查看完整描述

3 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

.title()字符串的方法(ASCII或Unicode很好)这样做:

>>> "hello world".title()'Hello World'>>> u"hello world".title()u'Hello World'

但是,请注意带有嵌入式撇号的字符串,如文档中所述。

该算法使用简单的与语言无关的单词定义作为连续字母组。该定义在许多情况下起作用,但它意味着收缩和占有的撇号形成单词边界,这可能不是所希望的结果:

>>> "they're bill's friends from the UK".title()"They'Re Bill'S Friends From The Uk"


查看完整回答
反对 回复 2019-07-25
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

仅仅因为这种事情对我来说很有趣,这里还有两个解决方案。

分成单词,从分组中初始化每个单词,然后重新加入。这将改变将单词分隔成单个空白区域的空白区域,无论它是什么。

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()进行非平凡处理以产生最终结果!


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 5387 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信