我想了解如何将字符串列表转换为数字列表。
我有一个php表单,用户通过该表单输入x和y的值,如下所示:
X: [1,3,4]
Y: [2,4,5]
这些值作为varchars存储在数据库中。从那里,这些由python程序调用,该程序应该将它们用作数字(numpy)数组。但是,这些被称为普通字符串,这意味着无法对它们执行计算。有没有办法在处理之前将它们转换为数值数组,还是有其他错误的东西?
答案 0 :(得分:2)
您可以使用list comprehension以及strip()和split()功能将其转换为数字值。
x = '[1,3,4]'
new_x = [int(i) for i in x.strip('[]').split(',')]
new_x
[1, 3, 4]
根据您的需要使用此int
列表,例如,将它们传递给numpy等。
from numpy import array
a = array(new_x)
a
array([1, 3, 4])
a * 4
array([ 4, 12, 16])
答案 1 :(得分:1)
这是一种方式:
>>> 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])
答案 2 :(得分:0)
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])
答案 3 :(得分:0)
如果我正确理解您的问题,您可以使用eval()
和compile()
内置函数来实现您的目标:
>>> lst_str = '[1,2,3]'
>>> lst_obj = compile(lst_str, '<string>', 'eval')
>>> eval(lst_obj)
[1, 2, 3]
请注意,以这种方式使用eval()
可能不安全,除非您可以验证输入。