有一个大写字符串的函数,我希望能够更改字符串的第一个字符,以确保它是小写的。
我怎么能用Python做到这一点?
答案 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']