archive= ['Frederick the Great',
'Ivan the Terrible',
'maurice Of Nassau',
'Napoleon BONAPARTE']
n=[]
n2=[]
n3[]
for line in archive:
n.append(line)
for x in n :
lw = x.lower()
for i in lw.split() :
n2.append(i)
for i in n2 :
if i == 'of' or i == 'the' :
i=i.lower()
n3.append(i)
else:
i=i.capitalize()
n3.append(i)
print(n3)
此代码将名称打印为字符串,如何使用.join()
来执行此操作或使用其他方法制作,以便输出将是名称中的单词大写,并且是小写的,并且在一起。
PS:编程还是新手,对于提出问题的任何错误感到抱歉。
答案 0 :(得分:1)
期望没有引号或标点符号,您可以按照以下步骤进行操作
archive = ['Frederick the Great',
'Ivan the Terrible',
'maurice Of Nassau',
'Napoleon BONAPARTE']
reformated = [
' '.join(word.capitalize()
if word not in ('the', 'of')
else word
for word in line.lower().split())
for line in archive
]
['Frederick the Great',
'Ivan the Terrible',
'Maurice of Nassau',
'Napoleon Bonaparte']
答案 1 :(得分:0)
另一种解决方案:
archive= [
'Frederick the Great',
'Ivan the Terrible',
'maurice Of Nassau',
'Napoleon BONAPARTE'
]
lines = []
for line in archive:
line = line.lower().split()
for i, word in enumerate(line):
if word in ('of', 'the'):
continue
line[i] = word.capitalize()
lines.append(' '.join(line))
print lines
这种解决方案的优势在于它可以降低1次拍摄中的线条,并且当单词“of of”或“the”时继续显示下一个单词,从而节省处理周期。
答案 2 :(得分:0)
我编写了short函数来大写给定的字符串。您可以使用map
来应用列表中的所有字符串列表。
archive= ['Frederick the Great',
'Ivan the Terrible',
'maurice Of Nassau',
'Napoleon BONAPARTE']
def capitalize_phrase(text):
s_capitalize = []
for s in text.split(' '):
if s.lower() in ['the', 'of']:
s_capitalize.append(s.lower())
else:
s_capitalize.append(s.capitalize())
return ' '.join(s_capitalize)
print(list(map(capitalize_phrase, archive)))