套利投注脚本:球队对阵与赔率文件读取的输出格式优化求助
优化套利投注脚本的输出格式
问题分析
原代码输出杂乱的核心原因:
- 读取文件时未处理每行的换行符(
\n)和空白字符 - 直接打印
zip_longest生成的元组,导致输出包含括号、引号 - 未对球队和赔率进行结构化分组后格式化输出
优化后的代码
import itertools # 读取并预处理球队名:去除空白行和换行符 with open('sports_event_organizer', 'r') as names_file: teams = [line.strip() for line in names_file if line.strip()] # 读取并预处理赔率:去除空白行和换行符 with open('odds_organizer', 'r') as odds_file: odds = [line.strip() for line in odds_file if line.strip()] # 自定义分组函数(兼容Python 3.9及以下版本) def group_items(iterable, group_size): iterator = iter(iterable) while True: group = tuple(itertools.islice(iterator, group_size)) if not group: break yield group # 将球队两两分组,赔率三三分组 team_pairs = group_items(teams, 2) odd_triples = group_items(odds, 3) # 按期望格式输出 for (team1, team2), (odd_win, odd_draw, odd_lose) in zip(team_pairs, odd_triples): print(f"{team1} - {team2}") print(odd_win) print(f"{odd_draw} (draw)") print(odd_lose) print()
关键改动说明
- 预处理数据:用
strip()去除每行的换行符和首尾空白,彻底消除输出中的\n - 结构化分组:通过自定义分组函数(或Python3.10+的
itertools.batched)将球队两两配对、赔率按胜/平/负分组,避免原代码中zip_longest生成的冗余结构 - 格式化输出:使用f-string直接拼接内容,完全匹配你需要的整洁格式,不再打印元组的原始结构
注意事项
- 若使用Python3.10及以上版本,可以用
itertools.batched(teams, 2)替代自定义的group_items函数,代码更简洁 - 你的球队文件有20支球队(生成10组对阵),但赔率文件只有9组赛事数据,
zip会自动只处理前9组配对,最后一组球队会被忽略,若需匹配请调整文件内容
内容的提问来源于stack exchange,提问作者baptzera
相关产品推荐
相关产品推荐

