Skip to main content
 首页 » 编程设计

python之打印带有宽度说明符的 python 列表

2025年05月04日10shanyou

我希望有更好的方法来做到这一点。直接上代码:

print "-I- %-6s%-6s%-6s%-6s%-6s%-6s%-6s%-6s%-8s" % \ 
      ("A",B","C","D","E","F","G","H","% Done") 
print "-I- %-6s%-6s%-6s%-6s%-6s%-6s%-6s%-6s%-8s" % \ 
      ("-"*5 ,"-"*5 ,"-"*5 ,"-"*5 ,"-"*5 ,"-"*5 ,"-"*5,"-"*5,"-"*8) 

理想情况下,我想做这样的事情:

hdrs = ["A",B","C","D","E","F","G","H","% Done"] 
<print statement that uses len(hdrs[i]+2) for the column width> 
<print statement that uses len(hdrs[i]+2) for the column width and len(hdrs[i]+1 for the number of dashes> 

输出看起来像这样:

A     B     C 
----- ----- ----- 

此方法比我当前的方法更具可扩展性。我尝试过使用 join 和 map 的各种方法,但一直无法找到可行的解决方案。任何帮助将不胜感激。

编辑:

我刚刚让这部分工作:

print " ".join("-"*(len(x)+1) for x in hdrs) 

前一行代码按照我在原始帖子中要求的方式打印破折号,但我想知道是否有更简洁的方法。我仍然不知道如何打印字符串。

请您参考如下方法:

如果您只是想完成它而不是将其作为练习,请使用 prettytable .此示例来自链接教程:

x = PrettyTable(["City name", "Area", "Population", "Annual Rainfall"]) 
x.align["City name"] = "l" # Left align city names 
x.padding_width = 1 # One space between column edges and contents (default) 
x.add_row(["Adelaide",1295, 1158259, 600.5]) 
x.add_row(["Brisbane",5905, 1857594, 1146.4]) 
x.add_row(["Darwin", 112, 120900, 1714.7]) 
x.add_row(["Hobart", 1357, 205556, 619.5]) 
x.add_row(["Sydney", 2058, 4336374, 1214.8]) 
x.add_row(["Melbourne", 1566, 3806092, 646.9]) 
x.add_row(["Perth", 5386, 1554769, 869.4]) 
print x 

输出:

+-----------+------+------------+-----------------+ 
| City name | Area | Population | Annual Rainfall | 
+-----------+------+------------+-----------------+ 
| Adelaide  | 1295 |  1158259   |      600.5      | 
| Brisbane  | 5905 |  1857594   |      1146.4     | 
| Darwin    | 112  |   120900   |      1714.7     | 
| Hobart    | 1357 |   205556   |      619.5      | 
| Sydney    | 2058 |  4336374   |      1214.8     | 
| Melbourne | 1566 |  3806092   |      646.9      | 
| Perth     | 5386 |  1554769   |      869.4      | 
+-----------+------+------------+-----------------+