Динамическое именование для сохранения файлов

Я не уверен, что правильный термин - это динамическое именование, но я хочу, чтобы имя моих файлов, которые я создаю, менялось в соответствии с биржевыми бирками, которые есть в моем списке.

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, кажется, очень мощный инструмент, и я чувствую, что можно делать то, что я пытаюсь сделать, но я не могу найти правильные якоря / модификаторы.

1 ответ

Решение

Попробуйте следующее:

stocks_query = ['AAPL', 'OPK', 'GOOGL']
filename = '_'.join(stock_query)
stocks.to_pickle('\\Users\Moondra\MachineLearning\stockPredictor-master\{}.pkl'.format(filename))
Другие вопросы по тегам