2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python 字符串首字母_如何将string(Python)中每个单词的首字母大写?

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

时间:2019-11-12 16:00:23

相关推荐

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"

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。