有一个大写字符串的函数,我希望能够更改字符串的第一个字符以确保它是小写的。
如何在Python中做到这一点?
Answers:
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 :-)
len(s) == 0简直就是骗子。
if not s:但这并不能很好地说明问题。
s[:1].lower() + s[1:]也适用于空字符串。我同意无需处理“无”。
有趣的是,这些答案都没有与完全相反capitalize()。例如,capitalize('abC')返回Abc而不是AbC。如果您想要的相反capitalize(),则需要类似:
def uncapitalize(s):
if len(s) > 0:
s = s[0].lower() + s[1:].upper()
return s
capitalize其余的字符串都没有用。
最简单的方法:
>>> mystring = 'ABCDE'
>>> mystring[0].lower() + mystring[1:]
'aBCDE'
>>>
更新资料
请参阅此答案(@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("")
>>>
无需处理特殊情况(我认为对称性更像Pythonic):
def uncapitalize(s):
return s[:1].lower() + s[1:].upper()
.upper()您的功能中不应有此功能。
我会这样写:
def first_lower(s):
if s == "":
return s
return s[0].lower() + s[1:]
这具有(相对)优点,如果您不经意地将其传递给了非字符串(例如,None或空列表)之类的东西,则会引发错误。