快速将字符串转换为python数据类型

可以使用 python 中的 eval() 函数,举例如下,我需要将大模型输出字符串转换为 numpy 数据类型

import numpy as np
import ast

# 原始字符串
s = "[(-0.014,0.009),(0.005,-0.027),(-0.008,0.006),(-0.014,0.014)]"

# 安全地解析字符串中的表达式
parsed_tuple_list = ast.literal_eval(s)

# 将元组列表转换为NumPy数组
np_array = np.array(parsed_tuple_list)

print(np_array)

python中自带的 eval() 函数可以完成此功能,但由于 ast.literal_eval() 更加安全,原因是 eval() 无法判断用户输入是否为恶意代码,比如用户输入 eval("__import__('os').system('rm -rf /')" 会导致删除服务器上所有文件。当然我们可以加入安全限制解决这个问题,比如:

# 定义一个安全的执行环境
safe_globals = {
    '__builtins__': {  # 允许使用特定的内置函数
        'abs': abs,
        'min': min,
        'max': max,
    },
    'math': math,  # 允许使用 math 模块
}

# 定义一个包含合法操作的表达式
expression = "max(abs(-3), math.sqrt(16))"

# 使用 eval 执行字符串中的表达式,并传入安全的环境
result = eval(expression, safe_globals)

print(result)  # 输出: 4.0

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值