没有第一个和最后一个双引号保存文件

时间:2014-10-04 09:59:47

标签: python json

我正在尝试将数据保存到文件中。我的问题是我保存的文件在第一行和最后一行包含双引号。我已经尝试了很多方法来解决它从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}

我从文本文件中逐行读取并转移到名为data的dict变量。这是阅读文件代码:

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}"

我无法删除""。

1 个答案:

答案 0 :(得分: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)