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