2014-02-27 29 views
1

這是我的第一個問題,對不起我的英語。矢量字符串,保存在文件中,並再次向量? Python

我已經搜索,但嗯,我不知道如何搜索,我嘗試不同的方式和關鍵字,但沒有。

問題是這樣的:

我做一些腳本與蟒蛇攪拌器和我想使用配置解析器來保存和加載項等,但例如,如果我想保存一個顏色,也在攪拌機是4個浮動地方矢量,將矢量與配置解析器文件,它obviusly保存一個字符串的文件,示例(可變配置是所有配置解析器的東西):

vector_color = [ 0.1, 0.8, 0.2, 1.0 ] 
config.set("section", "item", vector_color) 

它會保存這個:

[段]
項= <矢量(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

您可以使用正則表達式,像這樣:

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] 
1

如果您需要保存該行爲ual object - 保存列表而不是其中包含字符「[1,2,3]」的文件 - 我強烈建議您查看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 

'pickle'很棒。檢查官方的Python文檔。