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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:02