Python 3.x 在“.yml”文件中传递一个“lambda”函数
我需要通过Python 3.x 在“.yml”文件中传递一个“lambda”函数,python-3.x,yaml,Python 3.x,Yaml,我需要通过.yml文件传递所有变量。虽然传递str变量没有问题,但我不知道如何传递更复杂的东西,例如pythons'lambda函数 以下代码演示了我的问题: .yml文件: { csv_2_df: { time_stamp_params: { column_name: '@timestamp', extraction_lambda: lambda s: s[1:11] + ' ' + s[12:-2], format
.yml
文件传递所有变量。虽然传递str
变量没有问题,但我不知道如何传递更复杂的东西,例如python
s'lambda
函数
以下代码演示了我的问题:
.yml
文件:
{
csv_2_df: {
time_stamp_params: {
column_name: '@timestamp',
extraction_lambda: lambda s: s[1:11] + ' ' + s[12:-2],
format: '%Y-%m-%d %H:%M:%S.%f'
}
}
}
因此,在上面的示例中,如果我尝试用
with open(YAML_PATH, 'r') as f:
configs = yaml.full_load(f)
它抛出一个异常:
yaml.parser.ParserError: while parsing a flow mapping
in "configs.yml", line 14, column 28
expected ',' or '}', but got ':'
in "configs.yml", line 16, column 37
那么,如何在.yml
文件中传递python
s'lambda
函数呢
提前感谢您的帮助。您可以将lambda表达式作为字符串存储在yml中,并使用eval从字符串转换到函数。这很有效!谢谢你为什么不把它作为答案贴出来,这样我就可以相信你了?很高兴我能帮上忙。请记住,从安全角度来看,
eval
非常不安全。