回答
一个班轮它处理空字符串和None
:
func = lambda s: s[:1].lower() + s[1:] if s else ''
>>> func(None)
>>> ''
>>> func('')
>>> ''
>>> func('MARTINEAU')
>>> 'mARTINEAU'
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'只是bizzare。 – SilentGhost 2010-10-01 15:57:18
@SilentGhost:这是百万种有效的方式之一来说出它的意思。这与它需要解决的问题有关 - 如果字符串长度为零,则不得运行代码,因此明确地说明了我正在测试的内容。我可以说'如果不是s:',但这并不代表问题相当好。 – RichieHindle 2010-10-01 16:00:57
我宁愿'如果不是len(s)'个人,但这只是挑剔 – Daenyth 2010-10-01 16:10:11
最简单的方法:
>>> 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("")
>>>
是的。我也想知道为什么这是投票。如果出现错误,我会首先想知道。 – 2010-10-01 17:08:20
有一个错误 - 如果你传入一个空字符串,你会返回None,因为你有一个空的return语句。这是不直观的,必然会导致调用代码中的错误。 – 2010-10-02 20:24:41
s = "Bobby tables"
s = s[0].lower() + s[1:]
+1 Bobby桌子:) – Skilldrick 2010-10-01 15:58:52
'一个妈妈的利用:) :) – st0le 2010-10-01 18:48:11
有没有办法可以编辑这个小写字母而不仅仅是第一个字母?我想我可以做一些像's = s [10] .lower()+ s [11:]'这样的东西,但是这仍然只给我第一个字母而不是第一个字母。 – cosmictypist 2016-01-08 15:06:40
有趣的是,所有这些答案不准确的的capitalize()
相反。例如,capitalize('abC')
返回Abc
而不是AbC
。如果你想的capitalize()
相反,你需要的东西,如:
def first_lower(s):
if s == "":
return s
return s[0].lower() + s[1:]
这样做的(相对)的优点在于它会抛出,如果你的错误:
def uncapitalize(s):
if len(s) > 0:
s = s[0].lower() + s[1:].upper()
return s
我不认为这是OP – 2010-10-01 17:32:58
@Xavier的意图:你可能是对的,但有趣的是,大写字母与剩下的字符串混合在一起。 – 2010-10-01 22:04:31
是的,这很有趣,值得你的+1 – 2010-11-12 16:52:19
我这样写无意中将它传递给不是字符串的东西,如None
或空列表。
它将如何引发一个例外,其他解决方案不会?第一次发生错误的机会是当你切片时,所有其他人都会这样做。 – aaronasterling 2010-10-02 06:08:35
并非如此 - 例如,如果您将空白列表传递给接受的答案,则不会引发异常。 – 2010-10-02 09:19:13
无需处理特殊情况(我认为的对称性是更Python):
def uncapitalize(s):
return s[:1].lower() + s[1:].upper()
函数中不应该有'.upper()'。 – 2015-05-13 15:49:12
在执行操作之前很容易出错,检查s的长度 – harshil9968 2016-12-28 08:29:45
此复制post带领我这里。
如果你已经像下面
l = ['SentMessage', 'DeliverySucceeded', 'DeliveryFailed']
所示。然后,在列表中的所有项目的第一个字母转换为一个字符串列表,你可以使用
l = [x[0].lower() + x[1:] for x in l]
输出
['sentMessage', 'deliverySucceeded', 'deliveryFailed']
在这种情况下,甚至不需要使用枚举:列表中的x为l = [x [0] .lower()+ x [1: l)]' – Natim 2017-11-14 09:32:00
@Natim谢谢!只是意识到我不需要'我'! – 2017-11-14 09:35:46
- 1. C#:如何获得一个字符串的第一个字符?
- 2. 剥字符串的第一个字符
- 3. 字符串的第一个字符和最后一个字符
- 4. 解析枚举时降低字符串
- 5. 如何降低所有字符和大写字母只有通过js的第一个字符?
- 6. 如何删除PHP中的字符串的第一个字符?
- 7. 如何获取SQL中的字符串的第一个字符?
- 8. 我如何删除字符串的第一个字符[python]
- 9. 如何删除字符串的第一个字符?
- 10. 如何在Java中省略字符串的第一个字符?
- 11. Ruby:如何获取字符串的第一个字符
- 12. 树枝:如何获得字符串中的第一个字符
- 13. 如何在Android中替换字符串的第一个字符
- 14. 如何找到在C中第一个字符的字符串++
- 15. Android如何获取字符串的第一个字符?
- 16. 如何获取字符串的第一个字符
- 17. 如何得到一个字符串的第一个字母字符的iOS
- 18. 用另一个字符串替换字符串的第一个字符
- 19. StringTokenizer - 第一个字符串?
- 20. 获取字符串中子字符串的第一个字母
- 21. cout:最后一个字符串覆盖第一个字符串
- 22. 如何获得的第一个字一个字符串在Excel
- 23. 如何计算字符串数组中字符串的第一个字母C#
- 24. 如何从字符串中提取字符串的第一个数字
- 25. 字符串的第一个字
- 26. 如何获取函数来遍历字符串并替换字符串的第一个字符,第二个等?
- 27. 如何提取第一个子字符串我包含一个字符串/?
- 28. C - 显示一个低字符的字符串
- 29. 一个字符串以%fusionning的第一个字符
- 30. 获取第二个字符/字符串出现的字符串
你确定s.lower()不是你想要的吗? 否则你可能会得到奇怪的结果,比如'hELLO'。 – 2010-10-01 16:57:51
'hELLO'就是我一直在寻找的东西。 – Natim 2013-07-31 08:03:21