如何在Python的for in循环中生成连续序号,为输出CSV新增行号列
实现方法
你只需要新增一个连续计数器,仅在满足筛选条件的条目写入时累加,就能得到对应有效条目的行号,具体修改如下:
核心改动点
- 修改CSV表头,新增row列
- 在遍历赛事的循环前初始化计数器,初始值为1
- 符合写入规则时,同时写入赛事ID和当前计数器值,随后计数器自增
另外你现有代码里的f.close()是冗余的,with上下文管理器会在代码块执行结束后自动关闭文件,可以直接删除。
修改后完整代码
import requests def trigger(): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"} with open("SofaScore_Live.csv", "w+", newline="", encoding="UTF-8") as f: # 修改表头,用制表符分隔保证对齐效果 titlemenu = "id\trow\n" f.write(titlemenu) url = f'https://api.sofascore.com/api/v1/sport/football/events/live' response = requests.get(url, headers=headers).json() events = response['events'] # 初始化行号计数器 row_num = 1 for event in events: try: if event['hasEventPlayerStatistics']: description = event['status']['description'] if description == 'Halftime': continue # 避免覆盖Python内置id函数,变量名调整为event_id event_id = event['id'] row = f"{event_id}\t{row_num}\n" f.write(row) # 写入完成后行号自增 row_num += 1 except: pass
如果需要标准CSV格式(逗号分隔),只需要把表头和写入内容的\t替换为,即可。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

