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
表示形式转储到文件中...使用实际的序列化格式,如JSON
或pickle
或见鬼,在这种情况下,甚至是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列表,字符串,转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章