Python循环生成Excel文件如何仅导出指定Gruppe-Team组合文件
问题背景
现有Python代码通过两层嵌套循环遍历Gruppe、Team两个列表,调用pandas的read_html抓取网页表格后,会导出两个列表所有两两组合对应的积分榜、赛程CSV文件,共生成4组文件。实际仅需要生成指定一一配对的文件,排除错配的组合。
原代码如下:
#import requests from pandas import pandas as pd base_url = "https://baden.liga.nu/cgi-bin/WebObjects/nuLigaTENDE.woa/wa/groupPage?championship=B2+S+2022&group=" Gruppe = ["1","24"] Team = ["H1","H2"] #Tabelle & Spielplan for element in Gruppe: df = pd.read_html(base_url+str(element), index_col=0) for name in Team: df[0].to_csv('Exporte/Gruppe_'+str(element)+'_'+str(name)+'_Tabelle.csv', index = False) df[1].to_csv('Exporte/Gruppe_'+str(element)+'_'+str(name)+'_Spielplan.csv', index = False)
需要的目标配对为:
- Gruppe =
"1"对应 Team ="H1" - Gruppe =
"24"(若你实际需要的分组ID为2,直接替换对应值即可)对应 Team ="H2"
实现方案
放弃两层嵌套的笛卡尔积循环,直接定义需要的一一配对元组列表,单次循环遍历所有目标配对即可。同时可以优化原代码的重复请求问题:原嵌套循环中同一个分组网页会被请求2次,优化后每个分组仅请求1次,运行效率更高。
修正后完整代码
from pandas import pandas as pd import os # 自动创建导出目录,避免首次运行因文件夹不存在报错 os.makedirs("Exporte", exist_ok=True) base_url = "https://baden.liga.nu/cgi-bin/WebObjects/nuLigaTENDE.woa/wa/groupPage?championship=B2+S+2022&group=" # 直接配置所有需要的目标配对,按(分组ID, 队伍名)格式填写 target_matches = [ ("1", "H1"), ("24", "H2") ] for gruppe_id, team_name in target_matches: # 每个分组仅发起一次网页请求 table_list = pd.read_html(f"{base_url}{gruppe_id}", index_col=0) # 导出对应积分榜、赛程文件 table_list[0].to_csv(f"Exporte/Gruppe_{gruppe_id}_{team_name}_Tabelle.csv", index=False) table_list[1].to_csv(f"Exporte/Gruppe_{gruppe_id}_{team_name}_Spielplan.csv", index=False)
逻辑说明
- 两层嵌套循环会自动枚举两个列表的所有可能组合,适合需要全量配对的场景,不符合当前按固定对应关系生成文件的需求
- 固定配对的遍历方式只会生成你明确配置的组合,不会产生多余的错配文件
- f-string的写法比原来的字符串拼接可读性更高,不容易出错
内容的提问来源于stack exchange,提问作者Salazar
相关产品推荐
相关产品推荐

