目次
概要
"TRUE"
とか"true"
とか"T"
とか"yes"
とか"on"
とか"1"
とかみたいな真の値
を現しそうな文字列の場合にはTrue
へ、
"FALSE"
とか"false"
とか"F"
とか"no"
とか"off"
とか"0"
とかみたいな偽の値
を現しそうな文字列の場合にはFalse
へ
変換してくれるような処理をPythonで実施するにはどうしたらよいか。
distutils.util.strtoboolを使用する
distutils.util.strtobool
というライブラリがあるので、これを使うと実現できます。
実行例
Python 3.11.0 で実行しています。
strtobool.py
from distutils.util import strtobool if __name__ == "__main__": print("---------------") print("TRUE: ", bool(strtobool("TRUE"))) print("true: ", bool(strtobool("true"))) print("T: ", bool(strtobool("T"))) print("yes: ", bool(strtobool("yes"))) print("on: ", bool(strtobool("on"))) print("1: ", bool(strtobool("1"))) print("---------------") print("FALSE: ", bool(strtobool("FALSE"))) print("false: ", bool(strtobool("false"))) print("F: ", bool(strtobool("F"))) print("no: ", bool(strtobool("no"))) print("off: ", bool(strtobool("off"))) print("0: ", bool(strtobool("0")))
$ python .\strtobool.py --------------- TRUE: True true: True T: True yes: True on: True 1: True --------------- FALSE: False false: False F: False no: False off: False 0: False
真偽値判定できない文字列の場合
ValueError
が発生しますのでご注意ください。
strtobool_valueerror.py
from distutils.util import strtobool if __name__ == "__main__": print("---------------") print("other: ", bool(strtobool("other")))
$ python .\strtobool_valueerror.py --------------- Traceback (most recent call last): File "C:\temp\strtobool_valueerror.py", line 5, inprint("other: ", bool(strtobool("other"))) ^^^^^^^^^^^^^^^^^^ File "C:\Python311\Lib\site-packages\setuptools\_distutils\util.py", line 353, in strtobool raise ValueError("invalid truth value {!r}".format(val)) ValueError: invalid truth value 'other'