将列表中的字符串替换为新的变量名称
Substituting string from list into new variable names
我正在尝试在引用字符串列表时创建新的对象变量。我正在尝试使用 exec() 和 .format 来填写变量名,但我不断收到语法错误:
df_MMM=<__main__.stock_ object at 0x7fde41682890>
^
语法错误:语法无效*
这是我的代码:
class stock_:
def __init__(self, ticker):
self.ticker=ticker
def frame(self):
return web.DataReader(self.ticker,'yahoo',start, end)
list_of_stocks=['MMM','AXP',"AMGN",'AAPL','BA','CAT','CVX','CSCO','KO']
for i in list_of_stocks:
exec("df_{}={}".format(i,stock_(i)))
感谢任何帮助。谢谢
您需要验证您的格式值
exec("df_{}={}".format(i,stock_(i)))
您是否跟踪了您的值(标准调试实践)?我想不是。
stock_(i)
是 class ... 对象的一个实例。它的字符串表示形式就是您在错误消息中看到的内容。您是否正在尝试生成一行代码来进行实例化?上面的行进行了实例化,并将生成的字符串表示形式提供给 exec
。或许是这样:
exec("df_{}=stock_('{}')".format(i,i))
这将仅评估 i
,并将该值放入您的字符串中,例如
df_MMM=stock_('MMM')
我需要提出我在这里看到的 x-y 问题。您正在制作一组有点随意的新变量;我担心你会如何使用它们。我强烈怀疑多更好的方法是用股票代码键入字典——创建一个字典,而不是九个新变量。
stock_table = {}
for i in list_of_stocks:
stock_table[i] = stock_(i)
您也可以通过听写理解在一行中执行此操作。
编码留给学生作为练习。 :-)
我正在尝试在引用字符串列表时创建新的对象变量。我正在尝试使用 exec() 和 .format 来填写变量名,但我不断收到语法错误:
df_MMM=<__main__.stock_ object at 0x7fde41682890>
^
语法错误:语法无效*
这是我的代码:
class stock_:
def __init__(self, ticker):
self.ticker=ticker
def frame(self):
return web.DataReader(self.ticker,'yahoo',start, end)
list_of_stocks=['MMM','AXP',"AMGN",'AAPL','BA','CAT','CVX','CSCO','KO']
for i in list_of_stocks:
exec("df_{}={}".format(i,stock_(i)))
感谢任何帮助。谢谢
您需要验证您的格式值
exec("df_{}={}".format(i,stock_(i)))
您是否跟踪了您的值(标准调试实践)?我想不是。
stock_(i)
是 class ... 对象的一个实例。它的字符串表示形式就是您在错误消息中看到的内容。您是否正在尝试生成一行代码来进行实例化?上面的行进行了实例化,并将生成的字符串表示形式提供给 exec
。或许是这样:
exec("df_{}=stock_('{}')".format(i,i))
这将仅评估 i
,并将该值放入您的字符串中,例如
df_MMM=stock_('MMM')
我需要提出我在这里看到的 x-y 问题。您正在制作一组有点随意的新变量;我担心你会如何使用它们。我强烈怀疑多更好的方法是用股票代码键入字典——创建一个字典,而不是九个新变量。
stock_table = {}
for i in list_of_stocks:
stock_table[i] = stock_(i)
您也可以通过听写理解在一行中执行此操作。 编码留给学生作为练习。 :-)