使用getattr获取字符串变量的内容

时间:2017-04-07 04:28:45

标签: python string 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

我想从数据框列名Date=(即'Date')动态检索参数名oColumn。我考虑过使用getattr(oColumn, 'something'),但没想出怎么做。

我还尝试了str(oColumn)并返回错误:SyntaxError: keyword can't be an expression

谢谢

1 个答案:

答案 0 :(得分:0)

如果要动态设置发送给函数的参数名称,则需要使用kwargs。

render(**{argument_name: argument_value}

所以在你的情况下,假设oColumn包含你希望成为参数的字符串,它看起来像这样;

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

如果我误解了你的意图,请告诉我。