我想了解如何将字符串列表转换为数字列表。
我有一个 php 表单,用户通过它输入 x 和 y 的值,如下所示:
X: [1,3,4]
Y: [2,4,5]
这些值作为 varchars 存储到数据库中。从那里,这些被一个python程序调用,该程序应该将它们用作数字(numpy)数组。但是,这些被称为纯字符串,这意味着无法对它们执行计算。有没有办法在处理之前将它们转换为数值数组,或者还有其他错误吗?
我想了解如何将字符串列表转换为数字列表。
我有一个 php 表单,用户通过它输入 x 和 y 的值,如下所示:
X: [1,3,4]
Y: [2,4,5]
这些值作为 varchars 存储到数据库中。从那里,这些被一个python程序调用,该程序应该将它们用作数字(numpy)数组。但是,这些被称为纯字符串,这意味着无法对它们执行计算。有没有办法在处理之前将它们转换为数值数组,或者还有其他错误吗?
这是一种方法:
>>> import numpy
>>> block = "[1,3,4]"
>>> block = block.strip("[]")
>>> a = numpy.fromstring(block, sep=",", dtype=int)
>>> a
array([1, 3, 4])
>>> a*2
array([2, 6, 8])
import ast
import numpy as np
def parse_array(s):
return np.array(ast.literal_eval(s))
s = '[1,2,3]'
data = parse_array(s) # -> numpy.array([1,2,3])
如果我正确理解您的问题,您可以使用eval()
和compile()
内置函数来实现您的目标:
>>> lst_str = '[1,2,3]'
>>> lst_obj = compile(lst_str, '<string>', 'eval')
>>> eval(lst_obj)
[1, 2, 3]
但是请记住,eval()
以这种方式使用可能是不安全的,除非您可以验证输入。