如何获取二维列表各列最长字符串长度实现打印表格自动对齐
Python打印客户表格自动适配列宽的优化方案
核心优化思路
- 统一维护列配置,新增字段仅需修改配置列表,无需调整宽度计算、打印逻辑
- 按列批量计算最大宽度,消除逐列判断的重复代码
- 利用Python f-string原生的左对齐语法,无需手动拼接空格字符串
实现代码
customer_list = [ ["ctm1","jacon","jackson@gmail.com","+60166197213","15/5/1990","jadsfsd23"], ["ctm1","jacksonmartin","jacksonmartinez@gmail.com","+60166197213","15/5/1990","jadsfsddfdf23"] ] # 列配置:格式为(表头名称, 该列最小宽度),新增字段仅需在此处添加配置 HEADERS = [ ("ID", 2), ("Username", 8), ("Email Address", 13), ("Phone number", 12), ("Date of birth", 12), ("Extra", 5) ] def view_customer_account(): # 批量计算每列的最终宽度:取「最小宽度」「该列所有内容最大长度」「表头长度」的最大值 col_widths = [] for col_idx in range(len(HEADERS)): max_content_len = max(len(customer[col_idx]) for customer in customer_list) col_width = max(HEADERS[col_idx][1], max_content_len, len(HEADERS[col_idx][0])) col_widths.append(col_width) # 打印表头 header_row = "| " + " | ".join(f"{header[0]:<{col_widths[i]}}" for i, header in enumerate(HEADERS)) + " |" print(header_row) # 打印每条客户记录 for customer in customer_list: row = "| " + " | ".join(f"{customer[i]:<{col_widths[i]}}" for i in range(len(HEADERS))) + " |" print(row) view_customer_account()
方案优势
后续新增字段时,只需要在HEADERS列表中新增对应配置项即可,宽度计算、打印逻辑完全无需修改,不会产生重复的判断代码,适配任意数量的表列。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

