Think Twice
IT技術メモ | Pythonのメモ
Created: 2023-08-24 / Updated: 2023-08-24

Pythonで文字列からbool値に変換する


目次


概要

"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
Copy
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")))
Copy
$ 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
Copy
from distutils.util import strtobool

if __name__ == "__main__":
    print("---------------")
    print("other: ", bool(strtobool("other")))
Copy
$ python .\strtobool_valueerror.py
---------------
Traceback (most recent call last):
  File "C:\temp\strtobool_valueerror.py", line 5, in 
    print("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'

参考

参照

参考サイト