2014-09-29 104 views
-5

我试图删除第一次和最后一次引号后续字符串[1:-1]。但它没有正常工作! 这里是我的代码:第一次和最后一次删除双引号失败

def write_data_to_file(file_name, data): 
    f = open(file_name,'wb') 
    data_convert_str = dict() 
    data_remove_quotes =dict() 
    for index_line in range(1, number_lines +1) 
     data_convert_str[index_line] = repr(data_line]) 
     data_remove_quotes[index_line] = data_convert_str[1:-1] 
     json.dump(data_remove_quotes[index_line], f) 
     f.write('\n') 
    f.close() 

我的数据是一个字典类型:{'a' : 0.001, 'b' : 0.002},在我的程序产生。

而结果是:'a' : 0.001, 'b' : 0.002

请为我解释。

非常感谢您的帮助!

+2

不,这不是结果。 **这个**代码的结果是语法错误。请显示您的预期实际代码,实际结果和结果。 – geoffspear 2014-09-29 12:09:14

+2

什么?引号不是*字符串中的*,它们表明它*是一个字符串;你正在剥离大括号'{}'。 – jonrsharpe 2014-09-29 12:10:22

+0

亲爱的Wooble。这是实际的代码。 – PhuongHoang 2014-10-07 10:16:31

回答

0

你正在做的事似乎是把一个看起来像字典的字符串转换成字典。

由于jonrsharpe提到的原因,删除引号是行不通的。现在,Stack Overflow已经探讨了将字符串看作是一个词典的话题。像Here

长话短说?使用:import ast来导入抽象语法树模块(从2.6开始工作),然后ast.literal_eval(n),其中n是将字典存储为字符串的变量,在本例中为"{'a' : 0.001, 'b' : 0.002}"

花了我五秒钟的时间来搜索堆栈溢出找到这个。

编辑:我用2.7下的字符串测试了它,它返回你正在寻找的字典。

+0

'ast.literal_eval(n)'会给你一个字典,如果你想使用它,把它分配给一个变量,就像那样简单。 虽然,如果您想在文本文件中写入某些内容(无法从该代码中分辨出来),那么您最好还是将该字符串写入该文件中,然后在使用前将通过AST检索的值转换为该值。 如果您发现它有帮助,请不要忘记接受该答案。 – inirlan 2014-09-30 07:34:29

+1

亲爱的Inirlan。非常感谢你的帮助。这非常有帮助。 – PhuongHoang 2014-10-07 10:15:31

+0

不要忘记接受答案(答案旁边的小检查标记)! ;) – inirlan 2014-10-07 13:49:07

相关问题