我想将字符串的第一个字母大写,但保留其余部分
我有: 赛车
我想要什么: 赛车
然后只需将第一个字母大写
str.upper()
并将其余字母保持不变
string[0].upper() + string[1:]
演示:
>>> string = 'racEcar'
>>> string[0].upper() + string[1:]
'RacEcar'
您应该像 Martijn 建议的那样,但为了使您的函数更加健壮,请切片到第一个字母,这样您就不会在空字符串上出错:
>>> rc = 'racEcar'
>>> newrc = rc[:1].upper() + rc[1:]
>>> newrc
'RacEcar'
因此定义一个执行此操作的函数:
def capfirst(s):
return s[:1].upper() + s[1:]
然后:
>>> capfirst(rc)
'RacEcar'
>>> capfirst('')
''
这是一个相当老的问题,但我没有看到任何依赖正则表达式的答案。当涉及将字符串的第一个字母大写而不是像
str.title()
那样大写每个单词的第一个字母时,上面的答案就足够了。另外,谷歌仍然在这个页面上引导我,所有机会都是推广正则表达式的好机会!
因此,请寻找替代方案:
import re
def capitalise(s):
return re.sub("(?:^|\s).", lambda x: x.group(0).upper(), s)
该函数搜索字符串的第一个字符或前面有空格的所有字符,然后将
str.upper()
操作应用于匹配的子字符串。
举个例子,
>>> capitalise("aBC Abc abc")
'ABC Abc Abc'
这已经说过了,但我决定展示它。
使用
capitalize()
即可完成您想要的操作,无需额外工作。例如,
def Cap1(string):
# will not error if empty, and only does the first letter of the first word.
return string.capitalize()
如果您有多个单词,则使用
title()
可能需要额外的工作。例如,
假设您的字符串是:“我想要披萨”
def cap2(string):
return string.title()
输出将是:“我想要披萨”
使用
upper()
的另一种方法是:
def cap3(string):
if not len(string) == 0:
return string[0].upper()