【问题标题】:Convert Array formatted as a string - Python转换格式化为字符串的数组 - Python
【发布时间】:2013-08-27 07:26:14
【问题描述】:

我正在通过这样的套接字接收字符串

"['[0,0,0]','[0,0,0]']"

我想将它转换回数组。我尝试过使用

received.split(",")

但是它会拆分数组中的数组。

如何将字符串转换为数组?

【问题讨论】:

  • 你试过eval()吗?
  • 您到底想要什么作为输出?你已经有一个字符串...
  • 抱歉编辑了我的问题,我的意思是数组
  • 我建议先使用 JSON,然后再使用 JSON 解析器。让你远离评估,但得到你想要的。
  • @GrijeshChauhan 从不评估来自网络的数据。虽然下面的答案似乎说有一个安全的 eval 版本,因为它不能评估代码。

标签: python arrays string sockets networking


【解决方案1】:
>>> import ast
>>> s = "['[0,0,0]','[0,0,0]']"
>>> s = ast.literal_eval(s)
>>> s
['[0,0,0]', '[0,0,0]']
>>> s = [ast.literal_eval(sub) for sub in s]
>>> s
[[0, 0, 0], [0, 0, 0]] 

使用literal_evaleval 更安全。来自文档:

31.2. ast — Abstract Syntax Trees¶

ast.literal_eval(node_or_string)

安全地计算表达式节点或包含 Python 表达式的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。

这可用于安全地评估包含 Python 表达式的字符串 来自不受信任的来源,无需自己解析值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
相关资源
最近更新 更多