将字符串数组转换为数组Python

将字符串数组转换为数组Python,python,Python,我有一个像上面这样的字符串数组。如何删除所有的“”(我的意思是我希望它只转换为数组类型而不是字符串数组。) 我想要一个如下所示的数组: '[[[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n ...\r\n [-2048 -2048 -2048 ... -2048

我有一个像上面这样的字符串数组。如何删除所有的“”(我的意思是我希望它只转换为数组类型而不是字符串数组。)

我想要一个如下所示的数组:

'[[[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n ...\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]]'
警告:eval()可用于执行任意Python代码。你 不应将eval()用于不受信任的字符串。(见 Python的eval()在不受信任的字符串上?)

该函数运行一段字符串类型的代码。你应该非常小心这种做法。如果可以避免的话,我们非常不鼓励这样编写代码。如果字符串与您期望的不完全一致,则可能会出现高安全性和稳定性漏洞。这和Python一样有趣,但我要告诉您以不同的方式解决这个问题。如果您提供更多信息,我们可能会帮助您

我还想告诉您,您是否可以获取JSON格式的字符串,然后使用Python的原生JSON解析器;那将是更好的练习

编辑 我刚刚注意到,您的字符串对于Python是不可解析的,即使您执行了代码,因为您没有上面注释框中其他用户提到的适当逗号。您需要对其进行解析,然后调用
eval
,这甚至更复杂,更令人沮丧,尽管这是绝对可能的

编辑2
通过调用
str.replace(“,”,”)
使用
re.sub
删除不必要的
\r\n
并在必要时添加逗号,然后使用
ast.literal\u eval
将清理后的字符串转换为列表,可以很容易地在每个空格前添加逗号,然后执行上述代码

eval('variable='+'your string here')

这可能有点过头了,但解析它的安全方法是使用定义自定义解析器,例如:


您期望的输出在每个元素之间都有逗号,第二个元素也不是有效数组。这些元素之间没有逗号分隔。分离器应该是一个空间吗?什么是“…”?样本数据中的遗漏,或者实际上是字符串的一部分?这应该是某种形式的既定格式,还是虚构的?你能改用JSON等其他标准格式吗?对不起。我已经编辑过了!它必须用逗号分隔。“..”因为我的数组太长,无法显示所有的数字。@KeyJun请随意检查我的答案。似乎这不是我想要的!我想要的就像我问的问题。我见过一个使用
eval
的例子。这与我的处境无关。@KeyJun我认为这确实与你的处境有关,正如你所说的。您的问题是您的代码没有正确解析,所以您需要在调用eval之前添加逗号,正如我所解释的。除了为python数组创建自己的解析器之外,没有其他方法可以做到这一点,顺便说一句,这与添加逗号的麻烦几乎是一样的。因此,您是否希望创建一个函数,将深度记录到嵌套列表中,并按逗号分隔每个数字。split(','),生成列表列表多少人@KeyJunHe在原生字符串@NChauhan中也没有逗号,因此您需要先按空格分割。如果您像@J.C.Rocamonde中指出的那样正确处理异常,当然最好使用ast.literal\u eval
ast.literal\u eval
总是比使用
eval
更安全。如果您对数据源不确定,请不要使用eval。我得到了这个错误
ValueError:格式错误的节点或字符串:
如果您的原始数据源有
(省略号),那么您需要那一行
s=s.replace(''''','')
@Sunitha,这就是我在其他答案中指出的:)。然而,对我来说,动态计算字符串似乎也不是一个很好的实践。这意味着在应用程序数据实现方面存在瓶颈。您正在使用非常高级的技能为特定领域的语言创建解析器实际上并不像您想象的那么复杂;虽然是的,但我最近也偶然发现了这一点。
eval('variable='+'your string here')
>>> import ast
>>> import re
>>> s = '[[[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n ...\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]\r\n\r\n [[-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  ...\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]\r\n  [-2048 -2048 -2048 ... -2048 -2048 -2048]]]'
>>> s = s.replace(' ...', '')   # Not needed for your original string
>>> l = ast.literal_eval(re.sub(r'(\d?)(?:\r\n)*\s+', r'\1, ', s))
>>> print (l)
[[[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]], [[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]], [[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]], [[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]], [[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]], [[-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048], [-2048, -2048, -2048, -2048, -2048, -2048]]]
from pyparsing import *

num_expr = Word('-' + nums, nums).setParseAction(lambda t: int(t[0]))
array_expr = nestedExpr('[', ']', num_expr)

d = '[[[-2048 -2048]\r\n [-2048 -2048]]]'
print(array_expr.parseString(d).asList()[0])
# [[[-2048, -2048], [-2048, -2048]]]