Сохранение списка многих переменных Python в таблицу Excel с одновременным сохранением определенных типов переменных? - PullRequest
0 голосов
/ 07 декабря 2018

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

Допустим, у меня есть список множества переменных с разными типами (pd.datetimerange, pd.df, np.arrays и т. Д.), Если я сохраню их в файле excel, тип переменной будет утерян.

Также из моего файла Excel вызывается скрипт Python, поэтому я ничего не могу в нем изменить, не написав сценарий VBA.Который временно закрыл бы мою книгу, выгрузил символы (например, строки pickle) и снова открыл ее.

Возможно ли извлечь типы из файла excel без предварительной записи функции синтаксического анализа (которая будет принимать строку Excel)и дать мне с эквивалентным типом переменной)?

1 Ответ

0 голосов
/ 10 декабря 2018

Согласно вашему комментарию, вы можете получить eval для правильной обработки символов, локальных для какого-либо модуля, передав соответствующий диктант местных жителей в eval вместе с вашей строкой.Вот работоспособное решение:

import pandas as pd

def getlocals(obj, lcls=None):
    if lcls is None: lcls = dict(locals().items())

    objlcls = {k:v for k,v in obj.__dict__.items() if not k.startswith('_')}
    lcls.update(objlcls)

    return lcls

x = "[123,DatetimeIndex(['2018-12-04','2018-12-05', '2018-12-06'],dtype='datetime64[ns]', freq='D')]"
lcls = getlocals(pd)

result = eval(x, globals(), lcls)
print(result)

Вывод:

[123, DatetimeIndex(['2018-12-04', '2018-12-05', '2018-12-06'], dtype='datetime64[ns]', freq='D')]

Как Ответственный, я также обязан предупредить вас, что использование eval для вашего приложения смехотворно небезопасно. есть много обсуждений опасностей eval, и ни один из них не предполагает, что есть способ полностью смягчить эти опасности.Будьте осторожны, если вы решите использовать этот код.

...