Konvertieren von Zeichenfolgendarstellungen von Wörterbüchern in Wörterbücher
Betrachten Sie die Aufgabe, eine Zeichenfolgendarstellung eines Wörterbuchs in ein Wörterbuch umzuwandeln. Zum Beispiel:
s = "{'muffin' : 'lolz', 'foo' : 'kitty'}"
Man könnte versucht sein, die Eval-Funktion für diesen Zweck zu verwenden, aber es ist aufgrund der potenziellen Sicherheitsrisiken besser, Eval zu vermeiden.
Erwägen Sie stattdessen die Verwendung von Funktion ast.literal_eval, bereitgestellt von der Standardbibliothek von Python:
import ast dictionary = ast.literal_eval(s)
Die Funktion ast.literal_eval wertet einen String sicher aus enthält einen Python-Ausdruck. Es sind nur Literalstrukturen wie Zeichenfolgen, Zahlen, Tupel, Listen, Wörterbücher, Boolesche Werte und Keine zulässig, wodurch sichergestellt wird, dass der Ausdruck sicher ausgewertet werden kann.
Diese Methode ist sicherer als die Verwendung von eval, da sie die Ausführung verhindert von willkürlichem Code, der möglicherweise Ihr System gefährden könnte. Zum Beispiel:
# Dangerous example: eval("shutil.rmtree('mongo')") # Safe example: ast.literal_eval("shutil.rmtree('mongo')")
Im ersten Beispiel führt eval die Zeichenfolge als Python-Code aus, was zu einem Fehler führt, da mongo kein gültiges Verzeichnis ist. Im zweiten Beispiel wertet ast.literal_eval die Zeichenfolge sicher als Literalausdruck aus und löst einen Fehler aus, der darauf hinweist, dass die Zeichenfolge fehlerhaft ist.
Das obige ist der detaillierte Inhalt vonWie kann man String-Darstellungen von Wörterbüchern in Python sicher in Wörterbücher konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!