Zum Beispiel die Zeichenfolge:
user_info = '{"name" : "john", "gender" : "male", "age": 28}'
Wir möchten sie in das folgende Wörterbuch umwandeln:
user_dict = {"name" : "john", "gender" : "male", "age": 28}
Es gibt mehrere Methoden:
1. Konvertieren über JSON
>>> import json >>> user_info= '{"name" : "john", "gender" : "male", "age": 28}' >>> user_dict = json.loads(user_info) >>> user_dict {u'gender': u'male', u'age': 28, u'name': u'john'}
Aber es gibt ein potenzielles Problem bei der Verwendung von JSON für die Konvertierung.
Die JSON-Syntax schreibt vor, dass Zeichenfolgen in Arrays oder Objekten doppelte Anführungszeichen verwenden müssen. Einfache Anführungszeichen können nicht verwendet werden (auf der offiziellen Website gibt es eine Beschreibung: „Eine Zeichenfolge ist eine Folge von null oder mehr Unicode-Zeichen, eingeschlossen in.“ doppelte Anführungszeichen und Backslash-Escapezeichen verwenden). Daher ist die folgende Konvertierung falsch:
>>> import json >>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}" # 由于字符串使用单引号,会导致运行出错 >>> user_dict = json.loads(user_info) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 380, in raw_decode obj, end = self.scan_once(s, idx) ValueError: Expecting property name: line 1 column 2 (char 1)
2. Bei der Konvertierung durch eval
>>> user_info = '{"name" : "john", "gender" : "male", "age": 28}' >>> user_dict = eval(user_info) >>> user_dict {'gender': 'male', 'age': 28, 'name': 'john'} >>> user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}" >>> user_dict = eval(user_info) >>> user_dict {'gender': 'male', 'age': 28, 'name': 'john'}
besteht nicht das Problem, dass zum Konvertieren oben JSON verwendet wird. Es gibt jedoch Sicherheitsprobleme bei der Verwendung von eval.
3. Verwenden Sie ast.literal_eval für die Konvertierung durch literal_eval
>>> import ast >>> user = '{"name" : "john", "gender" : "male", "age": 28}' >>> user_dict = ast.literal_eval(user) >>> user_dict {'gender': 'male', 'age': 28, 'name': 'john'} user_info = "{'name' : 'john', 'gender' : 'male', 'age': 28}" >>> user_dict = ast.literal_eval(user) >>> user_dict {'gender': 'male', 'age': 28, 'name': 'john'}
Es gibt weder das Problem bei der Verwendung von JSON für die Konvertierung noch das Sicherheitsproblem bei der Verwendung von eval für die Konvertierung, daher wird die Verwendung empfohlen ast. literal_eval.
Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!
Das obige ist der detaillierte Inhalt vonSo verwandeln Sie eine Zeichenfolge in Python in ein Wörterbuch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!