Heim > Backend-Entwicklung > Python-Tutorial > So verwandeln Sie eine Zeichenfolge in Python in ein Wörterbuch

So verwandeln Sie eine Zeichenfolge in Python in ein Wörterbuch

Freigeben: 2019-07-05 14:27:29
Original
9462 Leute haben es durchsucht

So verwandeln Sie eine Zeichenfolge in Python in ein Wörterbuch

Zum Beispiel die Zeichenfolge:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'
Nach dem Login kopieren

Wir möchten sie in das folgende Wörterbuch umwandeln:

user_dict = {"name" : "john", "gender" : "male", "age": 28}
Nach dem Login kopieren

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'}
Nach dem Login kopieren

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)
Nach dem Login kopieren

2. Bei der Konvertierung durch eval

>>> user_info = &#39;{"name" : "john", "gender" : "male", "age": 28}&#39;
>>> 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'}
Nach dem Login kopieren

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 = &#39;{"name" : "john", "gender" : "male", "age": 28}&#39;
>>> user_dict = ast.literal_eval(user)
>>> user_dict
{&#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28, &#39;name&#39;: &#39;john&#39;}
user_info = "{&#39;name&#39; : &#39;john&#39;, &#39;gender&#39; : &#39;male&#39;, &#39;age&#39;: 28}"
>>> user_dict = ast.literal_eval(user)
>>> user_dict
{&#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28, &#39;name&#39;: &#39;john&#39;}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage