代码之家  ›  专栏  ›  技术社区  ›  Natim

如何将字符串的第一个字符降格?

  •  51
  • Natim  · 技术社区  · 14 年前

    有一个函数来大写一个字符串,我想能够改变字符串的第一个字符,以确保它将是小写。

    在Python中如何做到这一点?

    8 回复  |  直到 7 年前
        1
  •  80
  •   martineau    14 年前

    处理空字符串和 None :

    func = lambda s: s[:1].lower() + s[1:] if s else ''
    
    >>> func(None)
    >>> ''
    >>> func('')
    >>> ''
    >>> func('MARTINEAU')
    >>> 'mARTINEAU'
    
        2
  •  35
  •   JoshD    14 年前
    s = "Bobby tables"
    s = s[0].lower() + s[1:]
    
        3
  •  21
  •   RichieHindle    14 年前
    def first_lower(s):
       if len(s) == 0:
          return s
       else:
          return s[0].lower() + s[1:]
    
    print first_lower("HELLO")  # Prints "hELLO"
    print first_lower("")       # Doesn't crash  :-)
    
        4
  •  9
  •   Adrian McCarthy    14 年前

    有趣的是,这些答案都没有 与…相反 capitalize() capitalize('abC') Abc 而不是 AbC . 如果你想要相反的 ,您需要以下内容:

    def uncapitalize(s):
      if len(s) > 0:
        s = s[0].lower() + s[1:].upper()
      return s
    
        5
  •  8
  •   Community CDub    7 年前

    最简单的方法:

    >>> mystring = 'ABCDE'
    >>> mystring[0].lower() + mystring[1:]
    'aBCDE'
    >>> 
    

    更新

    this answer (通过@RichieHindle)获得更简单的解决方案,包括处理空字符串。这个答案不合适 None 不过,我的看法是:

    >>> def first_lower(s):
       if not s: # Added to handle case where s == None
       return 
       else:
          return s[0].lower() + s[1:]
    
    >>> first_lower(None)
    >>> first_lower("HELLO")
    'hELLO'
    >>> first_lower("")
    >>> 
    
        6
  •  5
  •   Don O'Donnell    14 年前

    无需处理特殊情况(我认为对称性更像是python):

    def uncapitalize(s):
        return s[:1].lower() + s[1:].upper()
    
        7
  •  0
  •   Robert Rossney    14 年前

    def first_lower(s):
        if s == "":
            return s
        return s[0].lower() + s[1:]
    

    None 或者一张空名单。

        8
  •  0
  •   Van Peer    7 年前

    这个复制品 post 带我到这儿来。

    l = ['SentMessage', 'DeliverySucceeded', 'DeliveryFailed']
    

    然后,要转换列表中所有项目的第一个字母,可以使用

    l = [x[0].lower() + x[1:] for x in l]
    

    ['sentMessage', 'deliverySucceeded', 'deliveryFailed']