s = 'the brown fox'
...在这里做点什么……
S应为:
'The Brown Fox'
最简单的方法是什么?
s = 'the brown fox'
...在这里做点什么……
S应为:
'The Brown Fox'
最简单的方法是什么?
当前回答
字符串的.title()方法(ASCII或Unicode都可以)这样做:
>>> "hello world".title()
'Hello World'
>>> u"hello world".title()
u'Hello World'
但是,请注意带有内嵌撇号的字符串,如文档中所述。
该算法使用一个简单的独立于语言的单词定义作为连续的字母组。这个定义在很多情况下都适用,但它意味着缩略词和所有格中的撇号形成了单词边界,这可能不是理想的结果: >>> "他们是比尔来自英国的朋友".title() “他们是比尔的英国朋友”
其他回答
大写的单词…
str = "this is string example.... wow!!!";
print "str.title() : ", str.title();
@Gary02127评论,下面的解决方案适用于带有撇号的标题
import re
def titlecase(s):
return re.sub(r"[A-Za-z]+('[A-Za-z]+)?", lambda mo: mo.group(0)[0].upper() + mo.group(0)[1:].lower(), s)
text = "He's an engineer, isn't he? SnippetBucket.com "
print(titlecase(text))
你可以试试这个。简单而利落。
def cap_each(string):
list_of_words = string.split(" ")
for word in list_of_words:
list_of_words[list_of_words.index(word)] = word.capitalize()
return " ".join(list_of_words)
我非常喜欢这个答案:
复制粘贴版本的@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])
对你的问题最简单的解决方法,在我的情况下是有效的:
import string
def solve(s):
return string.capwords(s,' ')
s=input()
res=solve(s)
print(res)
.title()方法不会在所有测试用例中工作,因此将.capitalize(), .replace()和.split()一起使用是将每个单词的第一个字母大写的最佳选择。
def caps(y):
k=y.split()
for i in k:
y=y.replace(i,i.capitalize())
return y