1

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

形式的可变因素

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')

感谢您的帮助。

4

2 回答 2

2

由于您已经知道文件名,您可以做一些非常简单的事情,例如:

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')
于 2019-04-17T20:41:17.983 回答
1

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')

不过很恶心。请记住,一个对象可以有任意数量的名称,或者根本没有名称

于 2019-04-17T20:30:04.280 回答