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

循环生成数据集并保存为多文件的报错排查

问题分析与修正方案

核心错误点

  1. 循环范围错误:你写的for m in muni[1]:是遍历muni列表里的第二个元组(("https://openbilanci.it/...", "partanna")),这会导致m先取URL,再取字符串"partanna"——第二次循环时用"partanna"当URL请求必然报错,还完全没处理第一个和第三个市政的数据。
  2. 文件命名错误:df.to_csv(muni[2]+"dak.csv", ...)里的muni[2]是整个第三个元组(包含URL和名称),把元组和字符串拼接就会触发你遇到的TypeError。

修正后的代码

import re
import json
import requests
import pandas as pd
import os
import random

os.chdir(r"/Users/aartimalik/Dropbox/data")

muni = [
    ("https://openbilanci.it/armonizzati/bilanci/filettino-comune-fr/entrate/dettaglio?year=2021&type=preventivo", "filettino"), 
    ("https://openbilanci.it/armonizzati/bilanci/partanna-comune-tp/entrate/dettaglio?year=2021&type=preventivo","partanna"),
    ("https://openbilanci.it/armonizzati/bilanci/fragneto-labate-comune-bn/entrate/dettaglio?year=2021&type=preventivo", "fragneto-labate")
]

# 遍历整个muni列表,直接解构每个元组的URL和市政名称
for url, name in muni:
    r = requests.get(url)
    p = re.compile("var bilancio_tree = (.*?);")
    data = p.search(r.text).group(1)
    
    data = json.loads(data)
    
    all_data = []
    
    for d in data:
        for v in d["values"]:
            for kk, vv in v.items():
                all_data.append([d["label"], "-", kk, vv.get("abs"), vv.get("pc")])
                
        for c in d["children"]:
            for v in c["values"]:
                for kk, vv in v.items():
                    all_data.append(
                        [d["label"], c["label"], kk, vv.get("abs"), vv.get("pc")]
                    )
                        
    df = pd.DataFrame(all_data, columns=["label 1", "label 2", "year", "abs", "pc"])
    
    # 用当前循环的市政名称生成对应文件名
    df.to_csv(f"{name}dak.csv", index=False)

关键修改说明

  • 循环改为for url, name in muni:,直接解构每个元组的URL和名称,一次处理一个市政的数据,覆盖所有目标。
  • 文件命名用f"{name}dak.csv",用当前循环的name变量生成对应文件名,比如第一个市政会生成filettinodak.csv,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者Pepa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:10:42