文字列からbool値に変換するのは、一見bool()関数でできそうですが、これは真偽値判断をしてくれる関数であって、空文字列がFalse。それ以外がTrueになってしまいます。
単純に文字列→boolとなる関数は標準ライブラリには用意されていないようです。
実際に変換したいのはいろいろな文字列→bool値の仕様があると思いますが、以下のような仕様での実装例を考えてみます。
文字列からboolへの変換の例
文字列 | bool値 |
---|---|
TRUE | True |
true | True |
T | True |
yes | True |
1 | True |
それ以外 | False |
Trueとなる文字列を列挙してマッチするかどうか
def str2bool(s):
return s.lower() in ["true", "t", "yes", "1"]
# 確認コード
for s in ["TRUE", "FALSE", "true", "false",
"T", "F", "yes", "no", "1", "0"]:
print(s, str2bool(s))
True対象でなければFalseとなるので、これで文字列からboolへの変換が実装できます。
distutils.util.strtoboolを使用
標準ライブラリにはないと書きましたが、別の用途で使用するモジュールにひっそり似たようなものがあります。
これを使用するのも楽です。
from distutils.util import strtobool
# 確認コード
for s in ["TRUE", "FALSE", "true", "false",
"T", "F", "yes", "no", "1", "0"]:
print(s, " ==> ", strtobool(s))
# Trueのとき1, Falseのとき0を返す
1と0の数値で返却されますが、数値の真偽値判別では0はFalse, 0以外はTrueとなるので問題ありません。先ほど挙げた変換例ともマッチするようです。