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

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

我有什么: 赛车

我想要什么: 赛车

【问题讨论】:

    标签: python string capitalize


    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多