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

如何使用Python获取Google Sheets列标题并随数据打印输出

解决方案

你遇到的问题核心有两个:

  1. 调用tabulate打印数据时没有指定表头参数,默认不会把第一行识别为列标题
  2. 按位置筛选数据时,只提取了匹配的球员数据行,没有把表头行加入最终的打印列表

具体修改步骤

1. 整队数据打印增加表头

修改user_commands函数里的打印逻辑,指定tabulate的headers参数为firstrow,自动把数据第一行识别为列标题:

# 原代码
# print(tabulate(data[team_name]))
# 修改后
print(tabulate(data[team_name], headers='firstrow', tablefmt='grid'))

tablefmt='grid'是可选参数,用来优化表格的显示边框,你可以根据自己的喜好调整。

2. 筛选位置后的结果增加表头

修改user_commands_2函数里的筛选逻辑,先提取表头行,再和筛选后的球员数据合并后打印:

# 原代码
# res = [i for i in data[team_name] if position.capitalize() in i]
# print(tabulate(res))

# 修改后
# 提取表头行
headers = data[team_name][0]
# 从第二行开始筛选匹配位置的球员,避免表头被误匹配
filtered_players = [i for i in data[team_name][1:] if position.capitalize() in i]
# 合并表头和筛选结果
res = [headers] + filtered_players
# 带表头打印
print(tabulate(res, headers='firstrow', tablefmt='grid'))

可选优化:修复位置输入校验逻辑

你当前的校验逻辑是判断输入是否在字符串options_1中,会出现输入单个字符就匹配成功的问题,建议改成用列表做校验:

# 把原来的options_1字符串改成列表
pos_options = ['goalkeeper', 'defender', 'midfielder', 'forward', 'home']
print(f"1: {', '.join(pos_options[:-1])}, {pos_options[-1]}")

position = input("\nPlease Enter a Position:\n").casefold()
print(f"You Have Entered {position}\n")

# 修改校验逻辑
while position not in pos_options:
    print("\nYou Entered a Wrong Option, Please Enter A Correct Option")
    print(f"1: {', '.join(pos_options[:-1])}, {pos_options[-1]}")
    position = input().casefold()

内容的提问来源于stack exchange,提问作者Jack Crosbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:36:05