我需要编写一个程序,可以将句子中的每个单词大写(存储为单词列表),不用影响句子其他部分的大小写。
比方说,例如,句子是'你好,我是ROB ALSOD'。在列表中,这将是:
['hello,','i','am','ROB','ALSOD']
我知道我可以循环使用str.title()
方法来标题,但这会导致:
['Hello,','I','Am','Rob','Alsod']
注意区别?我想要的效果是:
['Hello,','I','Am','ROB','ALSOD']
换句话说,我想保留其他大写字母。
答案 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']