我有一个包含多个st的列表。 字符串均以“ *”开头,然后以“ [”开头,中间有空格。像这样:
* [context......
现在我想将“ c”大写。 换句话说,我想将所有字符串的首字母大写。但是因为我先使用符号。 Capitalize()函数将不起作用。
我试图用大写这样的索引:
list = [i[3].capitalize() for i in list]
此输出仅是大写字母。而不是其余的字符串。
答案 0 :(得分:2)
最简单的方法是使用.title()
,它会忽略非字母字符:
>>> my_list = ['* [foo]', '* [bar]']
>>> map(lambda s: s.title(), my_list)
['* [Foo]', '* [Bar]']
或使用列表理解:
>>> [s.title() for s in my_list]
['* [Foo]', '* [Bar]']
答案 1 :(得分:1)
如果它们都是以这种方式开始的,那么我认为这将满足您的要求。
list_ = [i[:3] + i[3:].capitalize() for i in list_]
请注意,您不应将内置关键字list
用作变量名(它涵盖了代码中的目的)。
答案 2 :(得分:1)
尝试:-
list1 = [ "* [context......", "* [context1......" ]
for x in list1:
print(x[:3] + x[3].capitalize() + x[4:])
输出:-
* [Context......
* [Context1......
答案 3 :(得分:1)
下面是一个使用upper()
而不是大写的示例。来自here
test = ['* [context......', '* [bontext......', '* [zontext......']
test = [i[:3] + i[3:4].upper() + i[4:] for i in test]