列表中每个单词的首字母大写; Bar All-Caps Words

时间:2013-08-07 02:24:38

标签: python string list python-3.x capitalization

我需要编写一个程序,可以将句子中的每个单词大写(存储为单词列表),不用影响句子其他部分的大小写。

比方说,例如,句子是'你好,我是ROB ALSOD'。在列表中,这将是:

['hello,','i','am','ROB','ALSOD']

我知道我可以循环使用str.title()方法来标题,但这会导致:

['Hello,','I','Am','Rob','Alsod']

注意区别?我想要的效果是:

['Hello,','I','Am','ROB','ALSOD']

换句话说,我想保留其他大写字母。

2 个答案:

答案 0 :(得分:4)

这是一个单行,使用list comprehensions和字符串slicing

>>> words = ['hello,','i','am','ROB','ALSOD']
>>> [word[:1].upper() + word[1:] for word in words]
['Hello,', 'I', 'Am', 'ROB', 'ALSOD']

它将word[:1](包括第一个字符在内的所有内容)设置为大写,而不是word[0](第一个字符本身),以便在列表包含空字符串{{1}时避免错误}。

答案 1 :(得分:0)

虽然Zero Piraeus's answer是正确的,但我会因为functional syntax而避免循环。

>>> words = ['hello,','i','am','ROB','ALSOD']
>>> def up(word): return word[:1].upper() + word[1:]
>>> map(up, words)
['Hello,', 'I', 'Am', 'ROB', 'ALSOD']