You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tabulate+zip_longest遇headers参数错误,如何修正生成指定表格?

问题描述

使用Python结合tabulate库与itertools.zip_longest处理水果数据时触发错误:

TypeError at /controlepunt140 tabulate() got multiple values for argument 'headers'

移除tabulate后的原始数据格式如下:

16   Watermeloenen: 466
360      Appels: 688
6    Sinaasappels: 803
75   
9    
688      
22   
80   
160      
320      
160      
61   

期望生成带header1、header2表头的规范表格:

header1  header2
-------  -------
16       Watermeloenen: 466
360      Appels: 688
6        Sinaasappels: 803
75   
9    
688      
22   
80   
160      
320      
160      
61
修正方案

错误原因

出现multiple values for argument 'headers'通常是调用tabulate()时,同时通过位置参数和关键字参数传递了表头,或是传入的数据结构与表头参数逻辑冲突。

修正代码

以下是完整的可运行代码,包含数据预处理与正确的表格生成逻辑:

from tabulate import tabulate

# 原始行数据
raw_lines = [
    "16   Watermeloenen: 466",
    "360      Appels: 688",
    "6    Sinaasappels: 803",
    "75   ",
    "9    ",
    "688      ",
    "22   ",
    "80   ",
    "160      ",
    "320      ",
    "160      ",
    "61   "
]

# 拆分每行数据,确保每行都有两个字段(空字段用空字符串填充)
processed_rows = []
for line in raw_lines:
    stripped_line = line.strip()
    # 按第一个空格拆分,最多拆成2部分
    parts = stripped_line.split(maxsplit=1)
    if len(parts) == 1:
        processed_rows.append((parts[0], ""))
    else:
        processed_rows.append((parts[0], parts[1]))

# 正确调用tabulate生成表格
result_table = tabulate(processed_rows, headers=["header1", "header2"], tablefmt="simple")
print(result_table)

关键说明

  1. 数据预处理:通过split(maxsplit=1)拆分每行,确保每行都生成两个字段,避免后续表格生成时结构混乱;空字段用空字符串填充,匹配需求中的空白行效果。
  2. tabulate调用规范:仅通过关键字参数headers传递表头列表,避免重复传参;指定tablefmt="simple"生成符合需求的简洁表格格式。
  3. 若你原本是用zip_longest合并两个单列数据,需确保合并后的结果是二维列表/元组,且调用tabulate时只传一次表头参数,示例如下:
    from itertools import zip_longest
    
    col1 = ["16", "360", "6", "75", "9", "688", "22", "80", "160", "320", "160", "61"]
    col2 = ["Watermeloenen: 466", "Appels: 688", "Sinaasappels: 803"] + [""]*9
    merged_rows = list(zip_longest(col1, col2, fillvalue=""))
    result_table = tabulate(merged_rows, headers=["header1", "header2"], tablefmt="simple")
    

内容的提问来源于stack exchange,提问作者mightycode Newton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:15:38