numeros - string en python
¿Guarda la lista de muchas variables de Python en la hoja de Excel mientras mantiene simultáneamente los tipos de variables definidos? (1)
Según su comentario, puede hacer que eval
procese correctamente los símbolos que son locales en algún módulo pasando el dictamen apropiado de los locales a eval
, junto con su cadena. Aquí hay una solución viable:
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)
Salida:
[123, DatetimeIndex([''2018-12-04'', ''2018-12-05'', ''2018-12-06''], dtype=''datetime64[ns]'', freq=''D'')]
Como persona responsable, también tengo el deber de advertirle que usar eval
para su aplicación es ridículamente inseguro. Hay muchas discussions sobre los peligros de la eval
, y ninguno de ellos sugiere que haya una manera de mitigar completamente esos peligros. Tenga cuidado si decide utilizar este código.
Es posible con xlsxwriter guardar variables en archivos existentes existentes y leerlos después, aunque el problema es que las variables se almacenan como cadenas en mi archivo Excel.
Digamos que tengo una lista de muchas variables diferentes con varios tipos (pd.datetimerange, pd.df, np.arrays, etc.), si las guardo en el archivo excel, el tipo de variable se perdería.
También se llama al script de Python desde mi archivo de Excel, así que no puedo cambiar nada en él sin escribir un script de VBA. Lo que cerraría temporalmente mi libro de trabajo, volcaría los caracteres (con, por ejemplo, cadenas de encurtidos) y volvería a abrirlo.
¿Es posible recuperar los tipos del archivo de Excel sin escribir primero una función de análisis (lo que tomaría la cadena de Excel y me proporcionaría el tipo de variable equivalente)?