ホームページ > バックエンド開発 > Python チュートリアル > Pythonで文字列を辞書に変える方法

Pythonで文字列を辞書に変える方法

リリース: 2019-07-05 14:27:29
オリジナル
9463 人が閲覧しました

Pythonで文字列を辞書に変える方法

たとえば、文字列:

user_info = '{"name" : "john", "gender" : "male", "age": 28}'
ログイン後にコピー

これを次の辞書に変換したいとします:

user_dict = {"name" : "john", "gender" : "male", "age": 28}
ログイン後にコピー

いくつかの方法があります:

1. 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'}
ログイン後にコピー

ただし、変換に json を使用すると潜在的な問題が発生します。

JSON 構文では、配列またはオブジェクト内の文字列には二重引用符を使用する必要があり、一重引用符は使用できないと規定されています (公式 Web サイトには次の説明があります。「文字列は、ラップされた 0 個以上の Unicode 文字のシーケンスです)」バックスラッシュエスケープを使用して二重引用符で囲みます。)。したがって、次の変換は間違っています:

>>> 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. 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'}
ログイン後にコピー

による変換には、上記の変換に json を使用するという問題はありません。ただし、eval の使用にはセキュリティ上の問題があります。

3. ast.literal_eval を使用して変換すると、json を使用して変換する場合の問題や、eval を使用して変換する場合のセキュリティの問題がないため、ast.literal_eval を使用することをお勧めします。

Python 関連の技術記事の詳細については、

Python チュートリアル

列にアクセスして学習してください。

以上がPythonで文字列を辞書に変える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート