【问题标题】:Python lists, strings, conversions [duplicate]Python列表,字符串,转换[重复]
【发布时间】:2022-01-03 04:32:53
【问题描述】:

您好,我正在寻找一个如下所示的字符串: string: "[[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]]" 到实际列表: list: [[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]

我的代码从一个文件中读取,该文件存储了一个扁平的 str(list),我想从文件中检索它作为一个列表而不是一个 str。如果您有更好的存储和检索方式,将会有很大帮助。

【问题讨论】:

  • “我的代码从一个存储了一个完整的 str(list) 的文件中读取”不要这样做。不要只是将对象的str 表示形式转储到文件中...使用实际的序列化格式,如JSONpickle 或见鬼,在这种情况下,甚至是csv。

标签: python python-3.x string list file


【解决方案1】:
string = "[[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]]"
print(string)
print(type(string))

new = eval(string)
print(new)
print(type(new))

输出:

[[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]]
<class 'str'>
[[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]]
<class 'list'>

不确定是否安全,但我使用了 eval(string),将其转换为列表

【讨论】:

  • 始终注意在特定用例之外使用 eval()。不安全。
  • 不是一个好的答案。请检查重复项
  • @flamusdiu 在这种情况下这不是问题,但 OP 不应该将字符串表示形式作为序列化形式存储到文本文件中
  • @juanpa.arrivillaga 同意,但只是指出要注意使用 eval()。这不是灵丹妙药。
【解决方案2】:

只需使用 json 库

import json
l = json.loads("[[[[1.0], 1.0], [[1.0], 1.0]], [[[1.0, 1.0], 1.0], [[1.0, 1.0], 1.0]]]")

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2015-09-07
    • 2020-04-22
    • 2020-12-24
    • 2017-10-21
    相关资源
    最近更新 更多