цикл for для экспорта данных на основе имени переменной - PullRequest
1 голос
/ 17 апреля 2019

У меня есть список переменных, которые я пытаюсь экспортировать в 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 ]

1 голос
/ 17 апреля 2019

Поскольку вы уже знаете имена файлов, вы можете сделать что-то очень простое, например:

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')
1 голос
/ 17 апреля 2019

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

Впрочем, довольно противно. И помните, объект может иметь любое количество имен или вообще не иметь имени .

...