Python如何将二维列表按指定表头格式化输出保留两位小数的表格
Python二维列表格式化输出指定表格
首先准备基础数据:
# 原始二维矩阵 matrix = [ ['Adam', 57.6271186440678, 2.542372881355932, 0.0, 39.83050847457627], ['BAMON', 40.90909090909091, 9.090909090909092, 0.0, 50.0], ['BANESH', 72.61146496815287, 0.6369426751592356, 0.0, 26.751592356687897], ['BASA', 60.317460317460316, 4.761904761904762, 1.5873015873015872, 33.333333333333336] ] # 固定表头 headers = ["Name", "High Income", "Medium Income in Asia", "Low Income", "Extreme Income in America"]
方法1:内置库实现控制台对齐表格
不需要安装任何第三方依赖,自动计算列宽对齐,所有数值默认保留两位小数:
# 格式化每行数据 formatted_data = [] for row in matrix: # 名字首字母大写其余小写,匹配示例格式,不需要可直接使用row[0] name = row[0].capitalize() # 数值列统一保留两位小数 nums = [f"{val:.2f}" for val in row[1:]] formatted_data.append([name] + nums) # 计算每列最大宽度,保证对齐 col_width = [] for col_idx in range(len(headers)): current_max = len(headers[col_idx]) for line in formatted_data: current_max = max(current_max, len(str(line[col_idx]))) col_width.append(current_max) # 打印表格 split_line = "+" + "+".join(["-"*(w+2) for w in col_width]) + "+" print(split_line) # 打印表头 print("|" + "|".join([f" {h:<{col_width[i]}} " for i, h in enumerate(headers)]) + "|") print(split_line) # 打印内容 for line in formatted_data: print("|" + "|".join([f" {str(cell):<{col_width[i]}} " for i, cell in enumerate(line)]) + "|") print(split_line)
运行后输出的控制台表格边框完整、列对齐,数值精度符合要求。
方法2:生成指定结构的HTML代码
如果需要输出示例中带class属性的HTML表格结构,直接拼接字符串即可:
formatted_data = [] for row in matrix: name = row[0].capitalize() nums = [f"{val:.2f}" for val in row[1:]] formatted_data.append([name] + nums) # 拼接HTML结构 html = [ '<div class="s-table-container">', '<table class="s-table">', ' <thead>', ' <tr>' ] for h in headers: html.append(f' <th>{h}</th>') html.extend([ ' </tr>', ' </thead>', ' <tbody>' ]) for row in formatted_data: html.append(' <tr>') for cell in row: html.append(f' <td>{cell}</td>') html.append(' </tr>') html.extend([ ' </tbody>', '</table>', '</div>' ]) final_html = "\n".join(html) # 打印结果或写入文件使用 print(final_html)
生成的HTML结构和给出的示例完全一致,可以直接嵌入页面使用。
如果需要调整数值格式,比如对0值、整数值保留一位小数,修改列表推导式里的f-string格式化规则即可。
内容的提问来源于stack exchange,提问作者NorthernLights
相关产品推荐
相关产品推荐

