Я пытаюсь получить трехмерный список значений RGB, расположенных в виде текста в файле, и преобразовать его в обычный список, который я могу использовать в Python.
Список в файле выглядит так [[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]
.
Что я должен сделать, чтобы получить этот список как есть, чтобы использовать его в моем коде?
Я пытался использовать такие функции, как split(), но все еще не могу получить исходный список в файле из-за скобок.
используйте модуль ast
--> ast.literal_eval("[[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]")
Используйте JSON
import json
json.loads("[[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]")
дает тебе:
[[[1, 0, 0], [2, 1, 0]], [[0, 1, 0.5], [2, 3, 1.8]]]
Вы можете разобрать его как JSON.
In [1]: s = "[[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]"
In [2]: import json
In [3]: json.loads(s)
Out[3]: [[[1, 0, 0], [2, 1, 0]], [[0, 1, 0.5], [2, 3, 1.8]]]
Если вы хотите прочитать его из файла:
import json
f = open("file_path", "r")
your_list = json.load(f)
Вы можете использовать ast.literal_eval
в этом случае (документ):
from ast import literal_eval
txt = '[[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]'
l = literal_eval(txt)
print(l)
Отпечатки:
[[[1, 0, 0], [2, 1, 0]], [[0, 1, 0.5], [2, 3, 1.8]]]
Большое спасибо! Это именно то, что я искал.
Возможно, вы захотите использовать библиотеку ast
:
import ast
ast.literal_eval("[[[1,0,0],[2,1,0]],[[0,1,0.5],[2,3,1.8]]]")
# [[[1, 0, 0], [2, 1, 0]], [[0, 1, 0.5], [2, 3, 1.8]]]
Преимущество здесь в том, что literal_eval
будет безопасно анализировать строки в объекты python и не ограничиваться синтаксисом, специфичным для json, поскольку модуль json
Пожалуйста, определите
normal list
вы имеете в виду[1,0,0,2,1,0,0,1,0.5,2,3,1.8]
?