如何将字符串的第一个字符包掉?

时间:2010-10-01 15:52:28

标签: python string

有一个大写字符串的函数,我希望能够更改字符串的第一个字符,以确保它是小写的。

我怎么能用Python做到这一点?

8 个答案:

答案 0 :(得分:55)

处理空字符串的单行和None

func = lambda s: s[:1].lower() + s[1:] if s else ''

>>> func(None)
>>> ''
>>> func('')
>>> ''
>>> func('MARTINEAU')
>>> 'mARTINEAU'

答案 1 :(得分:24)

s = "Bobby tables"
s = s[0].lower() + s[1:]

答案 2 :(得分:19)

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  :-)

答案 3 :(得分:8)

有趣的是,这些答案中没有一个完全capitalize()完全相反。例如,capitalize('abC')返回Abc而不是AbC。如果你想要capitalize()的反面,你需要像:

def uncapitalize(s):
  if len(s) > 0:
    s = s[0].lower() + s[1:].upper()
  return s

答案 4 :(得分: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("")
>>> 

答案 5 :(得分:4)

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

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

答案 6 :(得分:0)

我会这样写:

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

这具有(相对)优点,如果你无意中传递了一些不是字符串的东西,如None或空列表,它会抛出错误。

答案 7 :(得分:0)

这个重复post引导我到这里来。

如果您有一个字符串列表,如下所示

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

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

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

输出

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