Byt*_*hon 17 python parsing vba pandas xlsxwriter
使用xlsxwriter可以将变量保存到现有的excel文件并在之后读取它们,尽管问题是变量在excel文件中存储为字符串.
假设我有各种类型的许多不同变量的列表(pd.datetimerange,pd.df,np.arrays等),如果我将它们保存到excel文件中,变量类型将丢失.
Python脚本也是从我的Excel文件中调用的,因此如果不编写VBA脚本,我就无法更改其中的任何内容.哪个会暂时关闭我的工作簿,转储字符(比如说pickle字符串)并重新打开它.
是否可以从excel文件中检索类型而无需先编写解析函数(这将采用excel字符串并使用等效的变量类型产生)?
根据您的评论,您可以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)
Run Code Online (Sandbox Code Playgroud)
输出:
[123, DatetimeIndex(['2018-12-04', '2018-12-05', '2018-12-06'], dtype='datetime64[ns]', freq='D')]
Run Code Online (Sandbox Code Playgroud)
作为一名负责人,我也有责任警告您,使用eval您的申请是非常不安全的.目前有很多讨论的危险eval,他们都不建议有一个办法彻底减轻这些危险.如果您选择使用此代码,请务必小心.
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |