在列表中填充字符串的长度相同(Python)

我有一个从文件中读取的字符串列表。每个元素都是一行文件。 我想要有一个具有相同长度的字符串数组。我想找到最长的字符串,并重新格式化其他字符串,只要最长的字符串(在它们末尾有空格)。 现在我找到最长的一个。但我不知道如何重新格式化其他字符串。有人可以帮我吗?在列表中填充字符串的长度相同(Python)

with open('cars') as f: 

lines = f.readlines()

lines = [line.rstrip('\n') for line in open('cars')]

max_in=len(lines[0])

for l in lines:

print (str(len(l))+" "+str(max_in))

if max_in < len(l):

max_in=len(l)

print max_in

回答:

与此开始:

In [546]: array = ['foo', 'bar', 'baz', 'foobar'] 

使用max找到最大的字符串的长度:

In [547]: max(array, key=len) # ignore this line (it's for demonstrative purposes) 

Out[547]: 'foobar'

In [548]: maxlen = len(max(array, key=len))

现在,使用列表理解和垫左:

In [551]: [(' ' * (maxlen - len(x))) + x for x in array] 

Out[551]: [' foo', ' bar', ' baz', 'foobar']

回答:

1)find max len :

max_len = max(len(el) for el in lines) 

2)添加空格他人串的两端:

lines = [" "*(max_len - len(el)) + el for el in lines] 

回答:

假设你有你的文件已经阅读字符串列表,你可以使用str.rjust()垫你的字符串左:

>>> lines = ['cat', 'dog', 'elephant', 'horse'] 

>>> maxlen = len(max(lines, key=len))

>>>

>>> [line.rjust(maxlen) for line in lines]

[' cat', ' dog', 'elephant', ' horse']

您也可以更改填充使用的字符:

>>> [line.rjust(maxlen, '0') for line in lines] 

['00000cat', '00000dog', 'elephant', '000horse']

>>>

回答:

您阅读文件两次。第一次,数据从未被使用过。您可以使用max以找到最大,和格式,添加空格:

with open('cars') as f: 

lines = [line.rstrip('\n') for line in f]

width = max(map(len, lines))

lines = ["{0:>{1}s}".format(line, width) for line in lines]

回答:

与所有的答案谢谢,我编辑我的代码,因为这:

with open('cars') as f: 

lines = f.readlines()

lines = [line.rstrip('\n') for line in open('cars')]

max_line_len = len(max(lines, key=len))

new_lines = [line.ljust(max_line_len) for line in lines]

以上是 在列表中填充字符串的长度相同(Python) 的全部内容, 来源链接: utcz.com/qa/262486.html

回到顶部