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

2 python csv format stdout list

我写的代码片段是既完全兼容Python 2Python 3.我写的片段解析数据,并将输出构建为CSV字符串列表.

该脚本提供了一个选项:

  • 将数据写入a CSV file,或
  • 把它展示给stdout.

虽然我可以很容易地遍历列表并更换,\t显示的时候stdout(第二项选择),该项目是任意长度的,所以不要在一个不错的格式排队由于标签的差异.

我做了很多研究,我相信字符串格式选项可以完成我所追求的目标.也就是说,我似乎无法找到一个帮助我获得正确语法的示例.

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

这是一个例子:

value1,somevalue2,value3,reallylongvalue4,value5,superlongvalue6
value1,value2,reallylongvalue3,value4,value5,somevalue6
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*all 6

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)))
Run Code Online (Sandbox Code Playgroud)

输出:

value1 | somevalue2 | value3           | reallylongvalue4 | value5 | superlongvalue6
value1 | value2     | reallylongvalue3 | value4           | value5 | somevalue6     
Run Code Online (Sandbox Code Playgroud)