您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何规范化python中的字符串列表?

5b51 2022/1/14 8:22:31 python 字数 3018 阅读 516 来源 www.jb51.cc/python

我有一个列表,表示数据网格(在电子表格中考虑行).每行可以有任意数量的列,每个单元格中的数据都是任意长度的字符串. 我想规范化这一点,实际上使每行具有相同数量的列,并且数据中的每列具有相同的宽度,必要时用空格填充.例如,给出以下输入: ( ("row a", "a1","a2","a3"), ("another row", "b1"), ("c", "x", "y", "a long str

概述

我想规范化这一点,实际上使每行具有相同数量的列,并且数据中的每列具有相同的宽度,必要时用空格填充.例如,给出以下输入:

(
 ("row a","a1","a2","a3"),("another row","b1"),("c","x","y","a long string")
)

我想要的数据如下所示:

(
 ("row a      ","a3           "),"b1","  ","             "),("c          ","x ","y ","a long string")
)

python 2.6或更高版本的pythonic解决方案是什么?只是为了清楚:我不想打印列表本身,我正在寻找一个解决方案,返回一个新的列表(或元组元组)与填充的值.

>>> d = (
 ("row a","a long string")
)

进行一次通过以确定每列的最大大小:

>>> col_size = {}
>>> for row in d:
        for i,col in enumerate(row):
            col_size[i] = max(col_size.get(i,0),len(col))

>>> ncols = len(col_size)

然后进行第二遍,将每列填充到所需的宽度:

>>> result = []
>>> for row in d:
        row = list(row) + [''] * (ncols - len(row))
        for i,col in enumerate(row):
            row[i] = col.ljust(col_size[i])
        result.append(row)

这给出了期望的结果:

>>> from pprint import pprint
>>> pprint(result)
[['row a      ','a1','a2','a3           '],['another row','b1','  ','             '],['c          ','x ','y ','a long string']]

为了方便起见,这些步骤可以组合成一个功能

def align(array):
    col_size = {}
    for row in array:
        for i,len(col))
    ncols = len(col_size)
    result = []
    for row in array:
        row = list(row) + [''] * (ncols - len(row))
        for i,col in enumerate(row):
            row[i] = col.ljust(col_size[i])
        result.append(row)
    return result

总结

以上是编程之家为你收集整理的如何规范化python中的字符串列表?全部内容,希望文章能够帮你解决如何规范化python中的字符串列表?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶