2017-04-07 49 views
0

我想知道如何检索字符串变量的内容,以便我可以使用它的值作为函数中的参数名称。 下面的代码:使用getattr获取字符串变量的内容

import pandas 
import jinja2 

oDateList = ['2017-03-22','2017-03-23','2017-03-24'] 
oData = pandas.DataFrame() 
oData['Date'] = oDateList 
MyTemplate = 'Today is {{ Date }}' 
oTemplate = jinja2.Template(MyTemplate) 

for oRow in oData.index: 
    for oColumn in oData.columns: 
     MyTemplateUpdated = oTemplate.render(Date=oData.loc[oRow, oColumn]) 
     print(MyTemplateUpdated) 

它运作良好,并返回:

Today is 2017-03-22 
Today is 2017-03-23 
Today is 2017-03-24 

我想从数据框列名oColumn(这是“日期”)动态检索参数名称Date=。我想过使用getattr(oColumn, 'something'),但没有弄清楚如何去做。

我自己也尝试str(oColumn)它返回错误:如果你想动态设置参数名称发送到一个功能SyntaxError: keyword can't be an expression

谢谢

+0

你尝试过'str(oColumn)'吗? – Rishav

回答

0

,你需要使用kwargs。

render(**{argument_name: argument_value} 

因此,在你的情况,假设oColumn包含你想成为参数的字符串,它会看起来像这样;

render(**{oColumn: oData.loc[oRow, oColumn]}) 

让我知道我是否误解了你的意图。

+0

谢谢,但请您介绍一下如何将它集成到上面的脚本中?我对kwargs不是很熟悉。 –

+0

@ Alexis.Rolland - 这个精心制作的帮助吗? – Shadow

+0

Definitelly,你很好理解,它的作用就像一个魅力!谢谢! –