[解決済み] 文字列を整数にパースするためのビルトインまたはよりPythonicな方法はありますか?
2023-07-14 10:59:29
質問
私は、文字列を整数にパースしようとしたときに優雅に失敗するために、以下の関数を書かなければなりませんでした。私はPythonがこれを行うために組み込まれた何かを持っていると想像しますが、私はそれを見つけることができません。そうでない場合、別の関数を必要としない、これを行うよりPythonicな方法はありますか?
def try_parse_int(s, base=10, val=None):
try:
return int(s, base)
except ValueError:
return val
私が最終的に使用した解決策は、@sharjeelの回答を修正したものです。以下は、機能的には同じですが、より読みやすいと思います。
def ignore_exception(exception=Exception, default_val=None):
"""Returns a decorator that ignores an exception raised by the function it
decorates.
Using it as a decorator:
@ignore_exception(ValueError)
def my_function():
pass
Using it as a function wrapper:
int_try_parse = ignore_exception(ValueError)(int)
"""
def decorator(function):
def wrapper(*args, **kwargs):
try:
return function(*args, **kwargs)
except exception:
return default_val
return wrapper
return decorator
どのように解決するのですか?
これはかなり一般的なシナリオなので、私は "ignore_exception" デコレーターを書きました。これは、優雅に失敗する代わりに例外を投げるあらゆる種類の関数に対して機能します。
def ignore_exception(IgnoreException=Exception,DefaultVal=None):
""" Decorator for ignoring exception from a function
e.g. @ignore_exception(DivideByZero)
e.g.2. ignore_exception(DivideByZero)(Divide)(2/0)
"""
def dec(function):
def _dec(*args, **kwargs):
try:
return function(*args, **kwargs)
except IgnoreException:
return DefaultVal
return _dec
return dec
あなたの場合の用法
sint = ignore_exception(ValueError)(int)
print sint("Hello World") # prints none
print sint("1340") # prints 1340
関連
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] JavaScriptで文字列を整数に変換する方法は?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] Pythonで整数から文字列に変換する
-
[解決済み] Pythonで複数行のコメントを作成する方法はありますか?
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み] オブジェクトの現在のプロパティと値をすべて表示する組み込み関数はありますか?
-
[解決済み] try/exceptを使わずに、文字列がintを表すかどうかを確認するにはどうしたらよいですか?
-
[解決済み】Pythonで複数のコンストラクタを持つためのクリーンでPythonicな方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] バブルソートの宿題
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] if 節の終了方法
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複