我不确定正确的术语是否是动态命名,但我想要我正在创建的文件的名称,用我列表中的股票代码进行更改。
stocks_query = ['AAPL','OPK'] #current stocks I have in my list/tuple
stocks.to_pickle('\\Users\Moondra\MachineLearning\stockPredictor-master\{}.pkl'.format(stocks_query)) #stocks is a dataframe
得到这样的东西:
['AAPL', 'OPK'].pkl
但我希望它更清洁,我在寻找
aapl_opk.pkl
或AAPL_OPK.pkl
我玩正则表达式,但我真的不知道完成这项任务。
re.findall(r'(\w+)', str(stocks_query))
stocks.to_pickle('\\Users\Moondra\MachineLearning\stockPredictor-master\{}.pkl'.format(re.findall(r'(\w+)', str(stocks_query))))
这产生与上述相同的结果;当我命名我的文件时,我不知道如何在股票名称之间加上'_'。
感谢。
编辑:
使用元组播放更多内容
stocks_query = ('AAPL', 'OPK', 'GOOGL')
str(stocks_query)
>> "('AAPL', 'OPK', 'GOOGL')" , I was able to get this far using `re.sub`
x =re.compile(r'[)(]')
y = re.compile(r"[']")
re.sub(y, '_', re.sub(x, "", str(stocks_query))).replace(',', '')
导致AAPL_ _OPK_ _GOOGL_
理想输出为AAPL_OPK_GOOGL
Re似乎是一个非常强大的工具,我觉得可以做我想做的事情,但我找不到合适的锚点/修饰符。
答案 0 :(得分:1)
尝试以下方法:
stocks_query = ['AAPL', 'OPK', 'GOOGL']
filename = '_'.join(stock_query)
stocks.to_pickle('\\Users\Moondra\MachineLearning\stockPredictor-master\{}.pkl'.format(filename))