Python列表,字符串,转换[重复]

Posted

技术标签:

【中文标题】Python列表,字符串,转换[重复]【英文标题】:Python lists, strings, conversions [duplicate] 【发布时间】: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。 【参考方案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]]]")

【讨论】:

以上是关于Python列表,字符串,转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在python中将列表转换为字符串[重复]

将列表项从字符串转换为int(Python)[重复]

Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]

如何将列表转换为字符串[重复]

python如何有多个重复元素删除其中一个?

如何解码一个unicode字符串Python [重复]