2014-10-04 20 views
-2

我想將我的數據保存到文件中。我的問題是我保存的文件在第一行和最後一行包含雙引號。我嘗試了很多方法來解決它從str.replace(),strip,csv到json,pickle。但是,問題仍然存在。我陷入了困境。請幫幫我。我會在下面詳細說明我的問題。保存沒有第一個和最後一個雙引號的文件

首先,我有一個名爲angles.txt這樣的文件:

{'left_w0': -2.6978887076110842, 'left_w1': -1.3257428944152834, 'left_w2':  -1.7533400385498048, 'left_e0': 0.03566505327758789, 'left_e1': 0.6948932961 181641, 'left_s0': -1.1665923878540039, 'left_s1': -0.6726505747192383}  
{'left_w0': -2.6967382220214846, 'left_w1': -0.8440729275695802, 'left_w2':  -1.7541070289428713, 'left_e0': 0.036048548474121096, 'left_e1': 0.166820410 49194338, 'left_s0': -0.7731263162109375, 'left_s1': -0.7056311616210938} 

我從文本文件中,並轉移到被稱爲數據的字典可變的讀取一行一行。這裏是讀取文件代碼:

def read_data_from_file(file_name): 
    data = dict() 
    f = open(file_name, 'r') 
    for index_line in range(1, number_lines +1): 
     data[index_line] = eval(f.readline()) 
    f.close() 
    return data 

然後我改變了一些數據。類似於data [index_line] ['left_w0'] = data [index_line] ['left_w0'] + 0.0006。之後,我將數據寫入另一個文本文件。下面是代碼:

def write_data_to_file(data, file_name) 
    f = open(file_name, 'wb') 
    data_convert = dict() 
    for index_line in range(1, number_lines): 
     data_convert[index_line] = repr(data[index_line]) 
     data_convert[index_line] = data_convert[index_line].replace('"','') # I also used strip 
     json.dump(data_convert[index_line], f) 
     f.write('\n') 
    f.close() 

我在新文件中接收到的結果是:

"{'left_w0': -2.6978887076110842, 'left_w1': -1.3257428944152834, 'left_w2':  -1.7533400385498048, 'left_e0': 0.03566505327758789, 'left_e1': 0.6948932961 181641, 'left_s0': -1.1665923878540039, 'left_s1': -0.6726505747192383}"  
"{'left_w0': -2.6967382220214846, 'left_w1': -0.8440729275695802, 'left_w2':  -1.7541070289428713, 'left_e0': 0.036048548474121096, 'left_e1': 0.166820410 49194338, 'left_s0': -0.7731263162109375, 'left_s1': -0.7056311616210938}" 

我不能刪除「」。

回答

2

你可以通過刪除不必要的轉換簡化代碼:

import json 

def write_data_to_file(data, filename): 
    with open(filename, 'w') as file: 
     json.dump(data, file) 

def read_data_from_file(filename): 
    with open(filename) as file: 
     return json.load(file) 
相關問題