这是产生我输出的最pythonic方式。让我说明我试图达到的行为。 对于我的项目我建立一个函数,它采用不同的参数来打印列中的输出。 其收到的列表示例。用列表打印Python格式
[('Field', 'Integer', 'Hex'),
('Machine;', 332, '0x14c'),
('NumberOfSections;', 9, '0x9'),
('Time Date Stamp;', 4, '0x4'),
('PointerToSymbolTable;', 126976, '0x1f000')
**项目的大小可以不同,现在每个元组(只有3项,可以是4另一个列表或任意数量的**
输出应该是这样的
Field Integer Hex
-------------------------------------------------------------------------------
Machine; 332 0x14c
NumberOfSections; 9 0x9
Time Date Stamp; 4 0x4
PointerToSymbolTable; 126976 0x1f000
用于工作目的,我创建了仅包含头字段列表: 这不是必要的,但它使人们更容易些艰难的东西出来
Header field is ['Field', 'Integer', 'Hex']
列表中的第一个元组声明所谓的“Header字段”,如列表示例所示。 对于这种情况,只有3个项目,但这可能会不时有所不同。所以我试着用下面的公式计算物品的尺寸:
length_container_header = len(container[0])
这个变量可以用来正确地建立输出。 构建标题“打印”我会构建这样的东西。
print("{:21} {:7} {:7}".format(header_field[0], header_field[1], header_field[2]))
现在这是一个应该如何使用的手册。正如您注意到标题字段“字段”短于列表中的 PointerToSymbolTable。我写此函数来确定在列表中
container_lenght_list = []
local_l = 0
for field in range(0, lenght_container_body):
for item in container[1:]:
if len(str(item[field])) > local_l:
local_l = len(str(item[field]))
else:
continue
container_lenght_list.append(str(local_l))
local_l = 0
每个位置上的最长的项目可生产沿着这个场合,例如[21,7,7]行的列表。 创建格式字符串可以做很简单,
formatstring = ""
for line in lst:
formatstring+= "{:" + str(line) +"}"
将会产生字符串:
{:21}{:7}{:7}
这是部分是一遇到麻烦,我如何能产生格式字符串的最后一部分? 我在格式()函数中尝试了一个嵌套的for循环,但我最终发现了各种错误。我认为这可以通过 for循环完成,我只是无法弄清楚。如果有人能够将我推向正确的方向打印标题,我将非常感激。一旦我想出如何打印标题,我几乎可以弄清楚其余部分。我希望我解释的不够好
随着亲切的问候,
http://www.programmingforums.org/post195293.html看看底部有一定的了解。你可以使用你的格式作为例子中的'row'变量。然后遍历列表来获取每行,这将是'args'。 – 2014-10-20 17:24:09
“格式字符串的最后部分”是什么意思?你能举一个简单的例子吗? – goncalopp 2014-10-20 17:25:38
我认为他不知道如何将他的列表值应用于格式。但是,我不完全确定。那里有很多话。 – 2014-10-20 17:26:06