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

Posted

技术标签:

【中文标题】将字符串的第一个字母大写,而不触及其他字母【英文标题】:Capitalize the first letter of a string without touching the others 【发布时间】:2015-10-24 09:34:40 【问题描述】:

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

我有什么: 赛车

我想要什么: 赛车

【问题讨论】:

【参考方案1】:

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

使用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()

【讨论】:

这个答案具有误导性:正如 OP 所示,capitalize() 不仅将第一个符号设为大写,而且将其余符号设为小写【参考方案2】:

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

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

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

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

然后:

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

【讨论】:

除非你想要如果字符串为空的话当然会出错。 如果这确实是一个错误条件,那么当然,但我喜欢编码到Robustness Principle【参考方案3】:

然后只需将str.upper() 的第一个字母大写,其余部分不变

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

演示:

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

【讨论】:

以上是关于将字符串的第一个字母大写,而不触及其他字母的主要内容,如果未能解决你的问题,请参考以下文章

将每个单词的第一个字母大写而不影响连续的字母

如何在飞镖中将字符串的第一个字母大写?

如何将字符串的第一个字母大写

大写字符串中的第一个字母[重复]

使用Angular或打字稿将字符串的第一个字母大写[重复]

将每个单词的首字母大写而不改变当前的大写字母