将Python输出格式化为行

2024-09-28 03:14:08 发布

您现在位置: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"]

我希望输出如下所示:(列宽略大于该列的最大长度)

^{pr2}$

我试着这么做:

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))

但它以列而不是行打印每个对象的数据。在

感谢帮助!谢谢。在


Tags: nameinforage编程col数组element
3条回答

只需添加额外的格式:

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特性的一部分,而制表符充当分隔符。总之,.format()方法在字符串部分中查找那些大括号,以确定容器l中的值 转到何处如何格式化这些值。例如,在标题的情况下,发生了以下情况:

^{pr2}$
  • 我们使用列表前面的星号(*)来^{}该列表中的元素。

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

  • 第二个大括号代表“Age”,格式为:<3

  • 第三个大括号表示“最喜欢的颜色”,格式为:<16

  • 所有这些字符串都用制表符分隔。

在print函数中结合上述步骤可以得到:

# Name          Age Favourite Colour

我希望这证明有用。在

使用zip(*iterables)

print(heading)
for row in zip(names, age, favouriteColour):
  print(row) # formatting is up to you :)

你可以自己打印标题(名字,年龄,最喜欢的颜色)。在

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

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

您还可以查看tabulate包中格式良好的表。在

相关问题 更多 >

    热门问题