2014-09-29 53 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

相關問題