Python:使用texttable将列表打印为表格
我想用 texttable 来把一个列表打印成表格。
这是我的代码:
col_types = ['t']
col_names = ['sessions/week']
col_align = ['r']
weeks_result = []
for i in range(1,53):
col_types.append("t")
col_names.append(str(i))
col_align.append("r")
table = Texttable()
table.set_deco(Texttable.HEADER)
table.set_cols_dtype(col_types)
table.set_cols_align(col_align)
table.add_row(col_names)
import pdb; pdb.set_trace()
for area, results_per_week in areas_weeks_dic.items():
weeks_result.append(area)
for i in range(1,53):
weeks_result.append(results_per_week[str(i)])
print weeks_result
table.add_row(weeks_result)
weeks_result = []
print table.draw()
如你所见,我在代码中设置了一个断点,用来打印一些数据给你看,基本上每一行有53个元素。
但不知怎么的,这段简单的代码却给我带来了一个很奇怪的错误,我搞不懂是什么原因。
下面是错误的详细信息。请问我哪里出错了?为什么会出现 ValueError
这个错误?
> c:...estprocess.py(600)<module>()
-> for area, results_per_week in areas_weeks_dic.items():
(Pdb) print col_types
['t', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't',
't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't', 't']
(Pdb) print col_names
['sessions/week', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24
', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49
', '50', '51', '52']
(Pdb) print col_align
['r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r',
'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r', 'r']
(Pdb) c
['TA | BaseConcept', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Telephony', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Driver Information', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Telematics', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Vehicle Functions', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Audio', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Entertainment', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Platform', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | HMI', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]
['TA | Speech & Language', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Build Acceptance Test', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | OTA', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0]
['TA | Navigation', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Connectivity', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
['TA | Smoke Test', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 5, 10, 12, 16, 29, 17, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Traceback (most recent call last):
File "GenerateTestProcess.py", line 600, in <module>
for area, results_per_week in areas_weeks_dic.items():
File "GenerateTestProcess.py", line 324, in draw
out += self._draw_line(row)
File "GenerateTestProcess.py", line 493, in _draw_line
line = self._splitit(line, isheader)
File "GenerateTestProcess.py", line 534, in _splitit
array.extend(textwrap.wrap(c, width))
File "C:\Python27\lib\textwrap.py", line 354, in wrap
return w.wrap(text)
File "C:\Python27\lib\textwrap.py", line 329, in wrap
return self._wrap_chunks(chunks)
File "C:\Python27\lib\textwrap.py", line 258, in _wrap_chunks
raise ValueError("invalid width %r (must be > 0)" % self.width)
ValueError: invalid width -2 (must be > 0)
1 个回答
0
我通过反复试验解决了这个问题。
因为我有一个很大的表格(大约有50列),所以没有每个单元格的宽度信息,它就无法正确打印出来。
一旦我提供了一个包含每个单元格宽度的数组,它立刻就能正常工作了。
table.set_cols_width(col_width)