2010-11-19 105 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

相关问题