首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列表中填充相同长度的字符串

在列表中填充相同长度的字符串
EN

Stack Overflow用户
提问于 2017-07-16 01:01:26
回答 5查看 4K关注 0票数 4

我有一个从文件读取的字符串列表。每个元素都是一行文件。我想要一个长度相同的字符串数组。我希望找到最长的字符串,并将其他字符串重新格式化为与最长字符串一样长的字符串(在它们的末尾加上空格)。现在我找到了最长的一个。但我不知道如何重新格式化其他字符串。有谁能帮帮我吗?

代码语言:javascript
运行
复制
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
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-07-16 01:05:38

从这个开始:

代码语言:javascript
运行
复制
In [546]: array = ['foo', 'bar', 'baz', 'foobar']

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

代码语言:javascript
运行
复制
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))

现在,使用列表理解并向左填充:

代码语言:javascript
运行
复制
In [551]: [(' ' * (maxlen - len(x))) + x for x in array]
Out[551]: ['   foo', '   bar', '   baz', 'foobar']
票数 10
EN

Stack Overflow用户

发布于 2017-07-16 01:12:49

假设已经从文件中读取了字符串列表,可以使用str.rjust()填充左侧的字符串:

代码语言:javascript
运行
复制
>>> lines = ['cat', 'dog', 'elephant', 'horse']
>>> maxlen = len(max(lines, key=len))
>>> 
>>> [line.rjust(maxlen) for line in lines]
['     cat', '     dog', 'elephant', '   horse']

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

代码语言:javascript
运行
复制
>>> [line.rjust(maxlen, '0') for line in lines]
['00000cat', '00000dog', 'elephant', '000horse']
>>> 
票数 8
EN

Stack Overflow用户

发布于 2017-07-16 01:06:28

1)查找max len:

代码语言:javascript
运行
复制
max_len = max(len(el) for el in lines)

2)在其他字符串的末尾添加空格:

代码语言:javascript
运行
复制
lines = [" "*(max_len - len(el)) + el for el in lines]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45120703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档