构建numpy dtype表单字符串(没有eval)?

时间:2017-05-29 15:10:51

标签: python numpy

我想构建/解析一个numpy dtype字符串,例如。

dtype_string = "[('a', '<i4', (100,)), ('b', '>i4')]"

并像

一样使用它
np.frombuffer(buffer, dtype=get_me_my_dtype(dtype_string))

我知道eval()可以工作(作为get_me_my_dtype()),但由于安全隐患,我不想在这里使用它。有关安全替代方案的任何建议吗?

干杯,马吕斯

1 个答案:

答案 0 :(得分:2)

ast.literal_eval安全地执行此操作:

>>> import ast
>>> dtype_string = "[('a', '<i4', (100,)), ('b', '>i4')]"
>>> ast.literal_eval(dtype_string)
[('a', '<i4', (100,)), ('b', '>i4')]