Python-在对齐列中打印CSV字符串列表


问题内容

我已经编写了与Python 2和完全兼容的代码片段Python 3。我编写的片段将 分析数据, 并将其构建 为CSV字符串列表

该脚本提供了以下 选项

  • 将数据写入CSV file
  • 显示到stdout

虽然我可以轻松地遍历列表并在显示到(第二个项目符号选项)时将其替换,为,但这些项目的长度是任意的,因此由于制表符的差异,请不要以很好的格式排列。\t``stdout

我已经做了大量研究,并且我相信字符串格式选项可以完成我所追求的目标。也就是说,我似乎找不到能够帮助我正确理解语法的示例。

我宁愿 不使用外部库 。我知道如果走那条路,会有很多选择,但是我希望脚本尽可能地兼容和简单。

这是一个例子:

value1,somevalue2,value3,reallylongvalue4,value5,superlongvalue6
value1,value2,reallylongvalue3,value4,value5,somevalue6

你能帮我吗?任何建议将不胜感激。


问题答案:
import csv
from StringIO import StringIO

rows = list(csv.reader(StringIO(
    '''value1,somevalue2,value3,reallylongvalue4,value5,superlongvalue6
value1,value2,reallylongvalue3,value4,value5,somevalue6''')))

widths = [max(len(row[i]) for row in rows) for i in range(len(rows[0]))]

for row in rows:
    print(' | '.join(cell.ljust(width) for cell, width in zip(row, widths)))

输出:

value1 | somevalue2 | value3           | reallylongvalue4 | value5 | superlongvalue6
value1 | value2     | reallylongvalue3 | value4           | value5 | somevalue6