Pythonの文字列で数式を計算する方法:eval関数の使い方と注意点
Pythonでは、eval関数を使うことで、文字列として記述された数学式(数式表現)を実際に評価し、計算結果を取得できます。
基本的な使い方
例えば、"(4*5) + 22" のように数式が含まれた文字列がある場合、それをevalに渡すだけで計算結果を得ることができます。
>>> s = "(4*5) + 22" >>> eval(s) 42
evalの評価ルール
evalは、括弧が省略された場合の演算子の優先順位などを含め、Pythonの通常の数式評価ルールに従って処理を行います。そのため、同じ式をPythonコードとして直接書いた場合とまったく同じ結果になります。
セキュリティ上の注意点
evalは非常に便利な一方で、重大なセキュリティホールやバグの原因となりうるため、使用には十分な注意が必要です。特に、ユーザー入力など信頼できない文字列をそのままevalに渡すと、悪意のあるコードが実行される危険性があります。
より安全な代替手段としては、リテラルのみを評価するast.literal_evalを使用する方法や、asteval・numexprなどの専用ライブラリを活用する方法が挙げられます。用途に応じて適切な方法を選択しましょう。
-
Pythonで文字列をタプルに変換する方法
Pythonで文字列をタプルに変換するには?Pythonの組み込み関数 tuple() を使うと、任意のシーケンスオブジェクトをタプルに変換できます。引数に文字列を渡した場合、各文字がそれぞれ独立した文字列要素として扱われ、カンマで区切られた形でタプルに格納されます。基本的な使用例>>> string = "Tutorialspoint">>> tuple(string)(T, u, t, o, r, i, a, l, s, p, o, i, n, t)このように、文字列「Tutorialspoint」は14個の文字要素を持つタプルへと変
-
Pythonで日付と時刻の計算を行う方法【timedeltaの使い方を解説】
Pythonでは、timedeltaオブジェクトを使うことで、日付や時刻の計算を非常に簡単に行えます。日時に時間を加算・減算したい場合は、まずdatetime.datetime()オブジェクトを作成し、そこにdatetime.timedelta()のインスタンスを足したり引いたりするだけです。timedeltaオブジェクトは「期間(duration)」、つまり2つの日付や時刻の差分を表します。timedeltaコンストラクタの関数シグネチャは以下のとおりです。datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, m