将Python输出格式化为行

时间:2017-01-31 22:04:29

标签: python

所以,我仍然是编程的新手,我正在尝试在Python中格式化某些数组的输出。我发现很难围绕格式化的某些方面。  我有几个要打印的数组,格式为表。

headings = ["Name", "Age", "Favourite Colour"]
names = ["Barry", "Eustace", "Clarence", "Razputin", "Harvey"]
age = [39, 83, 90, 15, 23]
favouriteColour = ["Green", "Baby Pink", "Sky Blue", "Orange", "Crimson"]

我希望输出看起来像这样:(其中列宽略大于该列中的最大长度)

Name          Age        Favourite Colour
Barry         39         Green
Eustace       83         Baby Pink
Clarence      90         Sky Blue
Razputin      15         Orange
Harvey        23         Crimson

我试着这样做:

mergeArr = [headings, name, age, favouriteColour]

但是(我认为)不会在正确的地方打印标题?

我试过了:

mergeArr = [name, age, favouriteColour] 
col_width = max(len(str(element)) for row in merge for element in row) + 2

for row in merge:
    print ("".join(str(element).ljust(col_width) for element in row))

但是会在列中打印每个对象的数据,而不是行。

感谢帮助!感谢。

4 个答案:

答案 0 :(得分:3)

您可以自行打印标题(名称,年龄,喜欢的颜色)。

然后你使用你拥有的代码,但是:

rows = zip(name, age, favouriteColour)
for row in rows...

您还可以查看tabulate包以获得格式良好的表格。

答案 1 :(得分:1)

只需添加额外的格式:

ll = [headings] + list(zip(names, age, favouriteColour))

for l in ll:
    print("{:<10}\t{:<2}\t{:<16}".format(*l))

# Name          Age Favourite Colour
# Barry         39  Green     
# Eustace       83  Baby Pink 
# Clarence      90  Sky Blue  
# Razputin      15  Orange    
# Harvey        23  Crimson  

花括号中的部分是python新字符formatting功能的一部分,而TAB则用作分隔符。总而言之,.format()方法在字符串部分中查找那些花括号,以确定容器l内的值。 去其中应该如何格式化这些值。例如,在标题的情况下,以下是正在发生的事情:

headings = ["Name", "Age", "Favourite Colour"]
print("{:<10}\t{:<3}\t{:<16}".format(*headings))
  • 我们使用列表前面的星号(*)来unpack该列表中的元素。

  • 第一个大括号是字符串“Name”,它的格式为:<10,这意味着它被调整到左边,并用额外的空格字符填充,如果字符串的长度小于10.本质上,它将打印给定字符串中的所有字符,并在该字符串的右侧添加额外的空格。

  • 第二个大括号是“年龄”,格式为:<3

  • 第三个大括号是“收藏的颜色”,格式为:<16

  • 所有这些字符串都以TAB字符分隔。

打印功能中上述步骤的组合产生:

# Name          Age Favourite Colour

我希望这证明有用。

答案 2 :(得分:0)

使用zip(*iterables)

dim a = cbo.DataSource

答案 3 :(得分:0)

Jacob Krall使用zip来合并您的列表是完全正确的。但是,如果你希望你的列能够很好地对齐(假设你使用的是Python 3.x),那么请看一下.format()方法,该方法可用于字符串并作为Python的一部分print功能。这允许您在输出中指定字段宽度。