回答
一個班輪它處理空字符串和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