将字符串的第一个字母大写,而不接触其他字母

问题描述 投票:0回答:4

我想将字符串的第一个字母大写,但保留其余部分

我有: 赛车

我想要什么: 赛车

python string capitalize
4个回答
9
投票

然后只需将第一个字母大写

str.upper()
并将其余字母保持不变

string[0].upper() + string[1:]

演示:

>>> string = 'racEcar'
>>> string[0].upper() + string[1:]
'RacEcar'

8
投票

您应该像 Martijn 建议的那样,但为了使您的函数更加健壮,请切片到第一个字母,这样您就不会在空字符串上出错:

>>> rc = 'racEcar'
>>> newrc = rc[:1].upper() + rc[1:]
>>> newrc
'RacEcar'

因此定义一个执行此操作的函数:

def capfirst(s):
    return s[:1].upper() + s[1:]

然后:

>>> capfirst(rc)
'RacEcar'
>>> capfirst('')
''

0
投票

这是一个相当老的问题,但我没有看到任何依赖正则表达式的答案。当涉及将字符串的第一个字母大写而不是像

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'

-5
投票

这已经说过了,但我决定展示它。

使用

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()
© www.soinside.com 2019 - 2024. All rights reserved.