1

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

例如,假设句子是“你好,我是 ROB ALSOD”。在列表中,这将是:

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

我知道我可以循环并使用该str.title()方法为它们命名,但这会导致:

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

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

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

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

4

2 回答 2

4

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

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

如果您的列表包含空字符串,它会大写word[:1](直到并包括第一个字符)而不是word[0](第一个字符本身)以避免错误''

于 2013-08-07T03:58:18.680 回答
0

虽然零比雷埃夫斯的答案是正确的,但我会拒绝使用更实用的语法来避免循环。

>>> words = ['hello,','i','am','ROB','ALSOD']
>>> def up(word): return word[:1].upper() + word[1:]
>>> map(up, words)
['Hello,', 'I', 'Am', 'ROB', 'ALSOD']
于 2013-08-07T04:30:12.360 回答