关于python:列表中每个单词的第一个字母的大写; Bar All-Caps Words

Capitalisation of First Letter of Each Word in a List; Bar All-Caps Words

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

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

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

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

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

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

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

换句话说,我想保持其他大写字母相同。


这是一个单行,使用列表推导和字符串切片:

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

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


虽然Zero Piraeus的答案是正确的,但我会为了避免循环而使用更具功能性的语法。

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