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

时间:2019-04-17 20:14:50

标签: python python-camelot

我有一个要导出到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')

感谢帮助。

2 个答案:

答案 0 :(得分: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')

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

答案 1 :(得分:1)

由于您已经知道文件名,因此可以执行以下简单的操作:

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