如何使用Python获取Google Sheets列标题并随数据打印输出
解决方案
你遇到的问题核心有两个:
- 调用
tabulate打印数据时没有指定表头参数,默认不会把第一行识别为列标题 - 按位置筛选数据时,只提取了匹配的球员数据行,没有把表头行加入最终的打印列表
具体修改步骤
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
相关产品推荐
相关产品推荐

