將字典的字串表示形式轉換為字典
考慮將字典的字串表示形式轉換為字典的任務。例如:
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
人們可能會想使用 eval 函數來實現此目的,但最好避免 eval,因為它有潛在的安全風險。
相反,請考慮使用Python標準函式庫提供的ast.literal_eval函數:
import ast dictionary = ast.literal_eval(s)
ast.literal_eval函數安全地求值包含 Python 表達式的字串。它只允許字串、數字、元組、列表、字典、布林值和 None 等文字結構,確保表達式可以安全地求值。
此方法比使用 eval 更安全,因為它會阻止執行可能危害您的系統的任意程式碼。例如:
# Dangerous example: eval("shutil.rmtree('mongo')") # Safe example: ast.literal_eval("shutil.rmtree('mongo')")
在第一個範例中,eval 將字串作為 Python 程式碼執行,這會導致錯誤,因為 mongo 不是有效目錄。在第二個範例中,ast.literal_eval 安全地將字串計算為文字表達式,並引發錯誤,指示該字串格式錯誤。
以上是如何在 Python 中安全地將字典的字串表示形式轉換為字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!