在Python中连接字符串

时间:2017-03-13 20:53:32

标签: python list join

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:编程还是新手,对于提出问题的任何错误感到抱歉。

3 个答案:

答案 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)))