如何将字符串转换为变量/列表名? [重复]

问题描述 投票:0回答:2

我有一个股票指数列表(indizies)和几个股票代码列表(例如 gdaxi、mdaxi)。

我想在两个循环中从雅虎下载股票。

背景:在真实程序中,用户可以选择要下载的索引,索引。

问题是,index_name 的类型是一个字符串,对于第二个循环,index_name 必须是一个列表。但是第二个循环将 index_name 作为字符串。

结果:它尝试下载

g,d,a,x,i

的 csv

问题:如何将 index_name 从字符串转换为列表?

from pandas_datareader import data as pdr   
indizies = ['GDAXI', 'MDAXI']  
gdaxi = ["ADS.DE", "AIR.DE", "ALV.DE"]
mdaxi = ["AIXA.DE", "AT1.DE"]
    
    for index_name in indizies:
    
            for ticker in index_name:
                df = pdr.get_data_yahoo(ticker)
                df.to_csv(f'{ticker}.csv')
python arrays list transform
2个回答
0
投票

ticker in index_name
中,您正在迭代给定字符串中的字母。

我猜你要将代码更改为:

from pandas_datareader import data as pdr   
  
gdaxi = ["ADS.DE", "AIR.DE", "ALV.DE"]
mdaxi = ["AIXA.DE", "AT1.DE"]
indizies = [gdaxi, mdaxi]   

for index_name in indizies:
    for ticker in index_name:
        df = pdr.get_data_yahoo(ticker)
        df.to_csv(f'{ticker}.csv')```

-1
投票

我们可以使用“locals”方法将变量作为字符串获取。它看起来像一本字典,您可以使用键获得结果。

indizies = ['GDAXI', 'MDAXI']  
gdaxi = ["ADS.DE", "AIR.DE", "ALV.DE"]
mdaxi = ["AIXA.DE", "AT1.DE"]

Variables = locals()
for index_name in indizies:
    for ticker in Variables[index_name.lower()]:
        print(ticker)

试试这个兄弟。它区分大小写。所以请在使用它们之前检查变量名。希望能帮助到你!快乐编码:)

© www.soinside.com 2019 - 2024. All rights reserved.