s = 'the brown fox'
...在这里做点什么……
S应为:
'The Brown Fox'
最简单的方法是什么?
s = 'the brown fox'
...在这里做点什么……
S应为:
'The Brown Fox'
最简单的方法是什么?
当前回答
当解决方案简单而安全的时候,为什么你要用连接和for循环来使你的生活复杂化?
只要这样做:
string = "the brown fox"
string[0].upper()+string[1:]
其他回答
如果你只想知道第一个字母:
>>> 'hello world'.capitalize()
'Hello world'
但是每个单词都要大写:
>>> 'hello world'.title()
'Hello World'
不要忽视空白的保留。如果你想处理“fred flinstone”,你得到的是“fred flinstone”而不是“fred flinstone”,你已经破坏了你的空白空间。上面的一些解决方案会丢失空白。这里有一个解决方案,适用于Python 2和3,并保留了空白。
def propercase(s):
return ''.join(map(''.capitalize, re.split(r'(\s+)', s)))
我非常喜欢这个答案:
复制粘贴版本的@jibberia回答:
def capitalize(line):
return ' '.join([s[0].upper() + s[1:] for s in line.split(' ')])
但是我发送的一些行分离了一些空白的“字符,在尝试执行s[1:]时导致错误。可能有更好的方法,但我必须添加一个if len(s)>0,就像在
return ' '.join([s[0].upper() + s[1:] for s in line.split(' ') if len(s)>0])
.title()方法不会在所有测试用例中工作,因此将.capitalize(), .replace()和.split()一起使用是将每个单词的第一个字母大写的最佳选择。
def caps(y):
k=y.split()
for i in k:
y=y.replace(i,i.capitalize())
return y
另一个解决方案是:
" ".join(map(lambda d: d.capitalize(), word.split(' ')))