规范化名称列表

时间:2017-03-13 16:01:16

标签: python list

我制作了此代码来规范化名称列表:

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()命令。 知道缺少什么吗?

1 个答案:

答案 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()将所有单词连接在一起,每个单词之间有一个空格。