我有一个标签列表,数据如下。
['id', '版本', 'chip_name', 'xversion', 'device', 'opt_param', 'place_effort'] [1, 1.0, u'virtex2', u'xilinx11.5', u'xc5vlx50', u'Speed', u'High']
我需要将它们打印到控制台中。为此,我正在遍历列表,并使用制表符 ('\t') 打印出每个元素。
但是,不幸的是,结果并不那么漂亮。
数据数 1 和列数 7 id 版本芯片名称 xversion 设备 opt_param place_effort 1 1.0 virtex2 xilinx11.5 xc5vlx50 速度高
标签和数据的字符串长度变化很大,并且没有很好地对齐。
Python有没有解决这个问题的方法?
添加
在 Mike DeSimone 的回答的帮助下,我可以制作出可用于我的目的的漂亮打印机。valueResults 是一个双重列表。
labels = queryResult.names
valueResults = queryResult.result
# get the maximum width
allData = valueResults
allData.insert(0,labels)
transpose = zip(*valueResults) # remove the sequence as a parameter
#print transpose
for value in transpose:
# value is integer/float/unicode/str, so make it length of str
newValue = [len(str(i)) for i in value]
columnWidth = max(newValue)
columnWidths.append(columnWidth)
dividers.append('-' * columnWidth)
dblDividers.append('=' * columnWidth)
label = value[0]
paddedLabels.append(label.center(columnWidth))
paddedString = ""
for values in valueResults[1:]:
paddedValue = []
for i, value in enumerate(values):
svalue = str(value)
columnWidth = columnWidths[i]
paddedValue.append(svalue.center(columnWidth))
paddedString += '| ' + ' | '.join(paddedValue) + ' |' + '\n'
string += '+-' + '-+-'.join(dividers) + '-+' + '\n'
string += '| ' + ' | '.join(paddedLabels) + ' |' + '\n'
string += '+=' + '=+='.join(dblDividers) + '=+' + '\n'
string += paddedString
string += '+-' + '-+-'.join(dividers) + '-+' + '\n'
这就是结果。
+----+---------+------------+------------+--------- -+------------+-------------+ | 编号 | 版本 | 芯片名 | 版本 | 设备 | 选择参数 | place_effort | +====+=========+============+============+========= =+============+===============+ | 1 | 1.0 | virtex2 | 赛灵思11.5 | xc5vlx50 | 速度 | 高 | | 2 | 1.0 | virtex2 | 赛灵思11.5 | xc5vlx50 | 速度 | 高 | +----+---------+------------+------------+--------- -+------------+-------------+
谢谢您的帮助。