首頁 >後端開發 >Python教學 >如何在 Python 中安全地將字典的字串表示形式轉換為字典?

如何在 Python 中安全地將字典的字串表示形式轉換為字典?

DDD
DDD原創
2024-12-26 10:22:09291瀏覽

How to Safely Convert String Representations of Dictionaries to Dictionaries in Python?

將字典的字串表示形式轉換為字典

考慮將字典的字串表示形式轉換為字典的任務。例如:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn