在列表元素中添加空格(PY)

时间:2014-11-27 10:05:40

标签: python

我遇到了问题:

我有一个由不同长度的元素组成的列表: det_slopes_JKH = ['Superpipe Bolgen','JatzPark','Avalanch Training Center','Bräma schwer']

并且我想在较短的单词中添加空格' ',目的是让列表中的所有元素具有相同的长度。

det_slopes_JKH2 = []
for element in det_slopes_JKH:
     if len(element) < len(element[2]:
         det_slopes_JKH2.append(element + ' ')

谢谢

6 个答案:

答案 0 :(得分:3)

你的目标不是很明确,但我假设你想拥有相同长度的所有琴弦。

这会为每个字符串添加一个空格,直到所有字符串都具有相同的长度(最长字符串的长度):

def equalize_lengths(l):
    length = len(max(l, key=len))
    return [e.ljust(length) for e in l]

答案 1 :(得分:1)

你需要两件事:

  1. 使用max = len(max(det_slopes_JKH, key=len))
  2. 的最大字符串长度
  3. 追加空格,直到长度等于最大字符串的长度。这可以使用ljust()作为i.ljust(max)来完成。 ljust不断向字符串右侧添加空格,直到字符串长度=最大值
  4. 这可以使用列表理解来完成:

    >>> det_slopes_JKH = ['Superpipe Bolgen','JatzPark','Avalanch Training Center','Bräma schwer']
    >>> [i.ljust(len(max(det_slopes_JKH, key=len))) for i in det_slopes_JKH]
    ['Superpipe Bolgen        ', 'JatzPark                ', 'Avalanch Training Center', 'Bräma schwer           ']
    

答案 2 :(得分:0)

这应该可以解决问题:

det_slopes_JKH = ['Superpipe Bolgen','JatzPark','Avalanch Training Center','Bräma schwer']
max_length  = max(len(elem) for elem in det_slopes_JKH)
det_slopes_JKH2 = [elem + ' '*(max_length - len(elem)) for elem in det_slopes_JKH]
print(det_slopes_JKH2)

结果是:

['Superpipe Bolgen        ', 'JatzPark                ', 'Avalanch Training Center', 'Bräma schwer            ']

答案 3 :(得分:0)

将内置maxkey=len一起使用,它会为您提供最大长度字符串,然后使用len获取长度,然后使用string formatting

>>> max(det_slopes_JKH, key=len)
'Avalanch Training Center'
>>> len(max(det_slopes_JKH, key=len)
24
>>> ['{:24}'.format(elem) for elem in det_slopes_JKH]
['Superpipe Bolgen        ', 'JatzPark                ', 'Avalanch Training Center', 'Br\xc3\xa4ma schwer           ']
>>> 

答案 4 :(得分:0)

[x.ljust(len(max(det_slopes_JKH,key=len))) for x in det_slopes_JKH ]

你可以尝试这一个班轮。

答案 5 :(得分:0)

我没有在其他答案中看到字符串格式化,我碰巧喜欢格式化,说我无法抗拒显示我的0.02答案

maxlen = max(len(elt) for elt in places)
fmt = "%-"+str(maxlen)+"s"
places = [fmt%elt for elt in places]