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

以下是不同方式的总结:

最简单的解决scheme是将句子拆分为单词,并将第一个字母大写,然后将其连接在一起。

# Be careful with multiple spaces, and empty strings # for empty words w[0] would cause an index error, # but with w[:1] we get an empty string as desired def cap_sentence(s): return ' '.join(w[:1].upper() + w[1:] for w in s.split(' '))

如果您不想先将inputstring拆分为单词,并使用奇特的生成器:

# Iterate through each of the characters in the string and capitalize # the first char and any char after a blank space from itertools import chain def cap_sentence(s): return ''.join( (c.upper() if prev == ' ' else c) for c, prev in zip(s, chain(' ', s)) )

或者不需要导入itertools

def cap_sentence(s): return ''.join( (c.upper() if i == 0 or s[i-1] == ' ' else c) for i, c in enumerate(s) )

或者你可以使用steveha的答案中的正则expression式

import re def cap_sentence(s): return re.sub("(^|\s)(\S)", lambda m: m.group(1) + m.group(2).upper(), s)

这些将用于所有这些input:

"" => "" "abc" => "ABC" "foO baR" => "FoO BaR" "foo bar" => "Foo Bar" "foo's bar" => "Foo's Bar" "foo's1bar" => "Foo's1bar" "foo 1bar" => "Foo 1bar"

现在,如果我们使用一个单词的定义作为句子的开头或任何空格之后的东西,那么这些是已发布的一些其他答案 ,以及它们不能按预期工作的input:

return s.title() # Undesired outputs: "foO baR" => "Foo Bar" "foo's bar" => "Foo'S Bar" "foo's1bar" => "Foo'S1Bar" "foo 1bar" => "Foo 1Bar"

return ' '.join(w.capitalize() for w in s.split()) # or import string return string.capwords(s) # Undesired outputs: "foO baR" => "Foo Bar" "foo bar" => "Foo Bar"

使用''拆分将修复第二个输出,但capwords()仍然不会工作的第一个

return ' '.join(w.capitalize() for w in s.split(' ')) # or import string return string.capwords(s, ' ') # Undesired outputs: "foO baR" => "Foo Bar"

小心多个空格

return ' '.join(w[0].upper() + w[1:] for w in s.split()) # Undesired outputs: "foo bar" => "Foo Bar"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值