Help us understand the problem. What is going on with this article?

python3 文字列を辞書に変換

More than 1 year has passed since last update.

個人メモとして。

やりたいこと

以下の文字列をそのまま辞書にしたい。

str = "{'名前':'太郎', '身長':'165', '体重':'60'}"

やったこと

astモジュールを利用することにより、そのまま辞書に変換することが出来た。

import ast

str = "{'名前':'太郎', '身長':'165', '体重':'60'}"
dic = ast.literal_eval(str)
print(dic['名前'])
print(type(dic))

↓実行結果↓
太郎
<class 'dict'>

以下を参照させていただきました。
https://blog.mktia.com/how-to-convert-string-to-dict/

追記

@shiracamusさんのコメントより追記させていただきました。

組み込みのeval関数と、ast.literal_evalの違いについて

eval関数は、引数に指定した文字列をpythonプログラムコードとして評価・実行する機能をもつ関数となる。
特に組み込みのeval関数では、悪意のあるユーザーから受け取った文字列をプログラムとして実行してしまいシステムに侵入される等の脆弱性、危険性がある。そのため外部からの文字列を受け取る場合、組み込みのeval関数は使用してはならない。

例)pythonからLinuxのコマンドを実行出来てしまう、、、

>>> eval("__import__('os').system('uname -a')", {})
Linux ubuntu 4.4.0-17763-................

astモジュールのliteral_evalは文字列、バイト列、数、タプル、リスト、辞書、集合、ブール値など評価対象が限定されているのでevalより安全に評価が可能。astを使用すること。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away