我遇到了python编码问题,必须使用一个数据文件,编写程序以读取文件,以某种方式操纵读取的数据,并生成输出报告。该报告必须是带有列的表,我无法弄清楚如何创建列。任何帮助表示赞赏。
答案 0 :(得分:1)
假设您要打印列表
L = [['name', 'age', 'birth date'],
['john', '45', '29/01/1974'],
['steve', '17', '13/03/2002'],
['paul', '13', '22/05/2006']]
以表格格式。第一步是定义表中的行数和列数,并保存到变量中,因为这样做可以帮助您。
使用for循环,您可以像打印表格一样打印所有信息。
for i in L:
print(*i, sep='|', end='')
print()
之后,您可以定义一个列表width
,每列每个元素的长度值。
也就是说,如果您输入类似
的列表[['name', 'age', 'birth date'],
['john', '45', '29/01/1974'],
['steve', '17', '13/03/2002'],
['paul', '13', '22/05/2006']]
它应该返回[5, 3, 10]
。
请注意,在第一列中最长的字符串是'steve'
( 5 个字符),第二列是'age'
( 3 个字符) ,第三列的所有字符串都具有相同的长度( 10 个字符)。
创建表格并将其打印在屏幕上之后,您可能会遇到以下问题:
name|age|birth date
john|45|29/01/1974
steve|17|13/03/2002
paul|13|22/05/2006
要解决此问题,您可以将内置方法(例如center
应用于列表中的每个字符串。 width
列表将对此有所帮助,因为可以通过列表width
的每个元素定义方法的每个参数的大小。
出于美学原因,您可能需要用水平线分隔线,如下所示:
---------+-------+--------------
name | age | birth date
---------+-------+--------------
john | 45 | 29/01/1974
---------+-------+--------------
steve | 17 | 13/03/2002
---------+-------+--------------
paul | 13 | 22/05/2006
---------+-------+--------------
同样,width
列表会帮助您。请注意,在水平线上,+
的数量将始终小于行数,而-
的数量将始终是由列表{定义的每一列的大小{1}}。