我制作了此代码来规范化名称列表:
n = ['King ARTHUR',
'Lancelot The brave',
'galahad the pure',
'Servant patsy',
'GALAHAD THE PURE']
for x in n:
lw = x.lower()
for i in lw.split():
n2.append(i)
for i in n2:
if i == 'the' :
i.lower()
n3.append(i)
else:
i.capitalize()
n3.append(i)
print(n3)
代码的目的是消除额外的空格,重复,并使每个骑士的名字和标题的第一个字母大写,而“the”是小写的。
但是输出似乎忽略了.capitalize()
命令。
知道缺少什么吗?
答案 0 :(得分:2)
Python列表推导对此有好处:
titles = ['King ARTHUR', 'Lancelot The brave', 'galahad the pure', 'Servant patsy', 'GALAHAD THE PURE']
normalised_titles = [' '.join("the" if w.lower() == 'the' else w.title() for w in title.split()) for title in titles]
print normalised_titles
给你:
['King Arthur', 'Lancelot the Brave', 'Galahad the Pure', 'Servant Patsy', 'Galahad the Pure']
这里的目的是首先使用split()
生成一个没有任何额外空格的单词列表。对于每个单词,使用title()
使第一个字符成为大写,除非它是单词the
,在这种情况下保持小写。最后,使用join()
将所有单词连接在一起,每个单词之间有一个空格。