这是我的第一个问题,对不起我的英语。
我已经搜索过,但嗯,我不知道如何搜索,我尝试不同的方式和关键字,但没有。
问题在于:
我正在使用python在blender中做一些脚本,我想使用配置解析器来保存和加载项目等。但是例如,如果我想保存颜色,那在搅拌机中是4个浮动位置的Vector,将矢量放在带有配置解析器的文件中,它显然在文件中保存了一个字符串,例子(变量配置是所有配置解析器的东西):
vector_color = [ 0.1, 0.8, 0.2, 1.0 ]
config.set("section", "item", vector_color)
它会保存这个:
[第]
item =< Vector(0.1,0.8,0.2,1.0)>
这是一件好事,因为它存储了矢量,但现在..问题,我想加载矢量,我怎么能这样做?这就是我的问题,因为如果我像向量一样加载它,它是一个字符串,所以..我怎么能再次将它转换为向量?我用eval(),literal_eval(),config.read_string()证明,我不知道我用很多可能的函数来证明。
所以,用更少的话来说:
我怎么能转换这个字符串:
"<Vector (0.1, 0.8, 0.2, 1.0)>"
到这个载体
[0.1, 0.8, 0.2, 1.0]
答案 0 :(得分:1)
如果您需要保存实际对象 - 保存列表而不是带有字符&#34; [1,2,3]&#34;在其中 - 我强烈建议您查看pickle
。
import pickle
my_list = [1, 1, 2, 3, 5]
pickled_list = pickle.dumps(my_list)
f = open('my_file.py', 'w')
f.write(pickled_list)
f.close()
#a wild coding appears...
#you used python... it's super effective
f = open('my_file.py', 'r')
read_file = f.read()
my_loaded_list = pickle.loads(read_file)
f.close()
my_loaded_list ##should be the list you just saved
&#39;泡菜&#39;是很棒的。查看官方Python文档。
答案 1 :(得分:0)
您可以使用正则表达式,如下所示:
import re
s = "<Vector (0.1, 0.8, 0.2, 1.0)>"
v = [float(x.group()) for x in re.finditer('\d.\d', s)]
# v = [0.1, 0.8, 0.2, 1.0]