Pythonでリストの文字列表現をリストに変換する方法【ast.literal_evalの使い方】
Pythonでは、"['apple', 'orange', 'banana']" のように文字列として表現されたリストを、実際のリストオブジェクトへ変換したい場面があります。そんなときに便利なのが、標準ライブラリの ast.literal_eval() です。
ast.literal_eval()とは
ast.literal_eval() は、文字列をPythonの式として安全に評価するための関数です。任意のコードを実行してしまう危険性がある eval() と異なり、評価できるのは文字列・数値・タプル・リスト・辞書・ブール値(True / False)、そして None といったPythonのリテラル構造のみに限定されます。そのため、外部から受け取った文字列をデータ構造に復元する際にも安心して使えます。
使用例
次の例では、リスト形式の文字列を ast.literal_eval() でリストに変換し、インデックスを指定して要素を取り出しています。
fruits = "['apple', 'orange', 'banana']" import ast fruits = ast.literal_eval(fruits) print(fruits[1], fruits[0])
実行結果
上記のコードを実行すると、以下のような出力が得られます。
orange apple
補足ポイント
変換後の fruits は文字列ではなくリスト型になるため、インデックスによる要素アクセスはもちろん、append() や len() といった通常のリスト操作もそのまま行えます。
また、変換対象の文字列がJSON形式である場合は、json.loads() を使う方法もあります。用途に応じて使い分けるとよいでしょう。
-
Pythonで文字列をバイナリ(2進数)に変換する方法をわかりやすく解説
Pythonで文字列をバイナリに変換する基本の考え方Pythonで文字列をバイナリ(2進数)表現に変換するには、文字列内の各文字を1つずつ取り出し、それぞれを2進数へ変換したうえで、結果をひとつの文字列として連結します。各文字の文字コードは ord() 関数で取得でき、format() 関数に「b」フォーマット指定子を渡すことで、簡単に2進数形式へ整形できます。format() と ord() を使った変換方法最もシンプルなのが、format(ord(x), b) を使って各文字 x を2進数の文字列に変換する方法です。次の例では、文字列 hello world の各文字をスペース区切りのバイ
-
【Python】辞書形式の文字列をdict型に変換する2つの安全な方法
はじめにPythonでは、文字列として表現された辞書(例:{foo: bar})を、実際の辞書(dict型)オブジェクトに変換したい場面がよくあります。この記事では、代表的な2つの変換方法である ast.literal_eval() と json.loads() の使い方を解説します。方法1: ast.literal_eval() を使うast.literal_eval() を使うと、文字列をPythonの式として安全に評価できます。この関数は、式ノードまたはPython式を含む文字列を評価しますが、許可されているのは文字列・数値・タプル・リスト・辞書・ブール値・Noneといったリテラル構造の