for循环根据变量名导出数据

for loop to export data based on variable name

我有一个要导出到 excel 的变量列表。但是,我 运行 在创建 for 循环时遇到了问题。它似乎使用变量名的实际值而不是变量名,这是有道理的。我还试图用变量的名称命名 excel 文件,我认为我可以在 for 循环中使用 str(factor) 来实现。

表格的可变因素

factors= camelot.read_pdf('Name_pdf',flavor='stream',pages='1-2')

factors=[base_rate,territory_factor,tier_factor,protection_class_factors,age_of_home,protective_device_option,law_multi_new_construc,claim_free,new_home,tenure_aoi,prior_insurance_discount,deductible_peril,construction_type,dwelling_rating_limit,territory_adjustment_factor]


for factor in factors:
    factor.export(str(factor)+'.xlsx',f='excel')

感谢帮助。

str(factor) 不会给出变量的名称。名称指的是对象,但通常你不能反其道而行之。

你可以试试:

factor_name = [k for k, v in locals().items() if v is factor and k != "factor"][0]
factor.export(factor_name+'.xlsx',f='excel')

虽然很讨厌。请记住,an object can have any number of names, or no name at all.

因为你已经知道文件名,你可以做一些非常简单的事情,比如:

factors= camelot.read_pdf('Name_pdf',flavor='stream',pages='1-2')
factor_names=['base_rate','territory_factor','tier_factor'] # etc..

for factor,factor_name in zip(factors,factor_names):
    factor.export(factor_name+'.xlsx',f='excel')