在python中将数组的字符串表示形式转换为实际数组
大家好,在网络上做一些事情,想知道是否有办法将python数组作为字符串转换回python数组。。比如说在python中将数组的字符串表示形式转换为实际数组,python,arrays,numpy,type-conversion,Python,Arrays,Numpy,Type Conversion,大家好,在网络上做一些事情,想知道是否有办法将python数组作为字符串转换回python数组。。比如说 x = "[1,2,3,4]" 将x转换为 x_array = [1,2,3,4] 如果它也可以用于numpy多维数组,则会有额外的好处 对于普通阵列,请使用: 不过,对于简单的应用程序,您可以使用以下方法将空格替换为逗号: 然后,您可以使用ast.literal\u eval并将其转换回numpy.array: >>> x = literal_eval(x) >
x = "[1,2,3,4]"
将x转换为
x_array = [1,2,3,4]
如果它也可以用于numpy多维数组,则会有额外的好处 对于普通阵列,请使用: 不过,对于简单的应用程序,您可以使用以下方法将空格替换为逗号: 然后,您可以使用
ast.literal\u eval
并将其转换回numpy.array
:
>>> x = literal_eval(x)
>>> np.array(x)
array([[1, 2, 3],
[4, 5, 6]])
>>>
如果确定字符串始终具有该结构,则可以删除括号并拆分字符串:
x_array = [int(y) for y in x[1:-1].split(',') if y.strip()]
我建议你实际上不想这么做。这类事情不容易扩展,例如,通过网络发送您定义的类的实例。相反,我建议您使用类似或的方法将数据转换为字节,通过网络发送,然后再将数据转换回。然而,在其他情况下,我总是使用。如果您指定如何通过网络发送数据,我将为您提供
pickle
在您的情况下的示例用法。尝试以下方法:
x_array = [(int(y) if y.strip() else None) for y in x[1:-1].split(',')]
阿卡雷姆??这对于列表来说是无效的语法。没人在乎。支持字符串来保存有效的列表表示形式。在
x=“[1,2,3,4,5,]”上出现中断。
使用strip检查空字符串进行了修复。+1用于提及pickle。+1但是,尽管我知道您正在尝试做什么,但我认为您应该包括列表(筛选器)(lamda x:x不是None,
围绕此删除None
值。为什么您都回答并标记为重复?请阅读此内容,此答案已在重复的线程中提到。@njzk2哦,我没有看到其他答案中提到JSON的部分。@njzk2,您应该阅读链接问题中的答案:)“这个问题应该结束(稍后删除),但请继续,先给提问者他们想要的答案,这样我们就不会给他们留下绝对可怕的经历。”
>>> x = literal_eval(x)
>>> np.array(x)
array([[1, 2, 3],
[4, 5, 6]])
>>>
x_array = [int(y) for y in x[1:-1].split(',') if y.strip()]
x_array = [(int(y) if y.strip() else None) for y in x[1:-1].split(',')]
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>> import json
>>> json.loads("[1,2,3,4]")
[1, 2, 3, 4]
>>>