2010-11-19 106 views

回答

25

可以使用capitalize()方法:

s = ['my', 'name'] 
s = [item.capitalize() for item in s] 
print s # print(s) in Python 3 

這將打印:

['My', 'Name'] 
+18

大寫不會做OP所要求的。大寫還會使小寫非首字母 – lurscher 2012-04-17 03:32:42

+6

是的,這個答案是誤導:''naMe'.capitalize()=='Name'' – Milimetric 2013-06-05 18:03:32

12

您可以使用'my'.title()將返回'My'

,並得到了完整的列表,只需在地圖像這樣:

>>> map(lambda x: x.title(), s) 
['My', 'Name'] 

其實,.title()使所有的字開始大寫。如果您想嚴格限制第一個字母,請改爲使用capitalize()。 (這使得例如在「這個詞」的差異而改由This WordThis word

+0

以及弗蘭克和弗蘭克的區別 - 正如這裏指出的http:///op.to/How.To.Capitalize.First.Letter+ – 2012-02-22 18:41:57

+0

另外,'str.title'是指定'lambda x:x.title()'的一種更簡單的方法。 – trss 2015-01-30 19:17:07

0

您可以使用

for i in range(len(s)): 
    s[i]=s[i].capitalize() 
print s 
+1

你不需要'temp',它不會做任何事情,所以和'list [i] = list [i] .capitalize()'一樣 - 只有當OP列表名爲's '被重新命名爲'list' - 但這是一個不好的做法,因爲這樣做會隱藏相同名稱的內置函數/類型。不知道爲什麼在打印聲明後面的逗號放在那裏... – martineau 2010-11-19 11:41:08

+0

這是錯字,以逗號。 – Kracekumar 2010-11-19 11:50:49

5

它可能並不重要,但你可能想用這個來代替在capitalize()title()字符串方法,因爲,除了uppercasing的第一個字母,他們也小寫的字符串的其餘部分(這不):

s = map(lambda e: e[:1].upper() + e[1:] if e else '', s) 
+0

+1:很好;然而,爲什麼'if s else''表達式?爲了避免空串的串聯?我相信這是過早的優化。 – tzot 2010-11-20 21:31:09

+0

@ΤΖΩΤΖΙΟΥ:謝謝。這部分是主要因爲我只是調整了我的答案類似的[問題](http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in-蟒蛇/ 3847369#3847​​369)。我寧願把它看作防禦性編程,因爲它可以處理一個list元素爲'None'(所以,不,因爲擔心空字符串的情況不太理想,所以它不在那裏)。 – martineau 2010-11-21 00:12:22

+1

我認爲像這樣處理'None'是不好的做法。我寧願在這種情況下引發異常,而不是默默地傳遞(可能是錯誤的)空字符串。 – dbkaplun 2012-08-13 20:52:57

45

兩個.capitalize()和.title僞()改變其他將字符串中的字母改爲小寫。

這是一個簡單的函數,只是將第一個字母改爲大寫,而其餘的不變。

def upcase_first_letter(s): 
    return s[0].upper() + s[1:] 
+0

+1感謝您提供內置功能! – 2013-03-25 18:34:21

+0

這不會更改OP問題中顯示的列表中的_each element_的第一個字母。 – martineau 2013-06-05 18:41:45

+1

雖然LC,'[i [0] .upper()+ i [1:] for s]' – 2015-12-05 15:15:15

相關問題