Python PR

【Python】特定の文字列を判定してbool値を取得する方法

記事内に商品プロモーションを含む場合があります

この記事では、Pythonで特定の文字列を判定してbool値を取得する方法を解説します。

何かしらの処理を実行する際にユーザーに確認を取りたい場合があります。

ユーザーに確認を取るには特定の文字列を入力してもらい、その文字列を判定して処理を実行するかしないかを分岐します。

それでは、文字列を判定する方法を見ていきましょう1

まずは基本的な文字列判定

文字列を含むシーケンス型は、空だとFalse、それ以外だとTrueとして判定されます。

print(bool(''))      # False
print(bool('あいう'))  # True

この性質を利用することで文字列が空のときの処理と空でないときの処理を分岐させることができる。

任意のオブジェクトを型変換(キャスト)する方法

そのまま条件分岐の条件式として指定することもできます。

if '':
    print('空文字')

if 'あいう':
    print('あいう')

実行結果

あいう

ただし、任意の文字列で判定できるわけではないので

比較演算する

任意の文字列かどうかを判定するには「==」で比較演算すればよい。

t = 'yes'

print('yes' == t)

実行結果

True

さらに「y」でもTrueとして判定したい場合は、論理演算子のorを使って条件を繋ぐ。

t = 'y'

print('yes' == t or 'y' == t)

実行結果

True

さらに、受け取った値が大文字だった場合でも処理ができるように文字列型のlower関数を使って小文字に変換する。

t = 'YES'

print('yes' == t.lower() or 'y' == t.lower())

実行結果

True

あとはif文やらinput関数と組み合わせて使いましょう。

t = input('yes/no: ')

if 'y' == t.lower() or 'yes' == t.lower():
    # y または yesだった場合の処理
else:
    # それ以外だった場合の処理

if文を使った条件分岐の方法を解説

distutilsを使う

Trueとして判定したい、またはFalseとして判定したい文字列の種類はある程度定まっている。それを毎回比較演算子やif文で定義するのはめんどくさいです。

そんな時はdistutils.util.strtobool()を使うことで「y, yes, t, true, on, 1」を真(1)、「n, no, f, false, off, 0」を偽(0)として判定できます。

import distutils.util 

print(f'yes: {distutils.util.strtobool("yes")}')    # yes: 1
print(f'y: {distutils.util.strtobool("y")}')        # y: 1
print(f'YES: {distutils.util.strtobool("YES")}')    # YES: 1
print(f't: {distutils.util.strtobool("t")}')        # t: 1
print(f'True: {distutils.util.strtobool("True")}')  # True: 1
print(f'on: {distutils.util.strtobool("on")}')      # on: 1
print(f'1: {distutils.util.strtobool("1")}')        # 1: 1


print(f'no: {distutils.util.strtobool("no")}')        # no: 0
print(f'n: {distutils.util.strtobool("n")}')          # n: 0
print(f'NO: {distutils.util.strtobool("NO")}')        # NO: 0
print(f'f: {distutils.util.strtobool("f")}')          # f: 0
print(f'False: {distutils.util.strtobool("False")}')  # False: 0
print(f'off: {distutils.util.strtobool("off")}')      # off: 0
print(f'0: {distutils.util.strtobool("0")}')          # 0: 0

引数に指定した値がどれでもない時はValueErrorを送出します。

Linkdistutils.util.strtobool(val) - 9. API リファレンス — Python ドキュメント

まとめ

この記事では、Pythonで文字列を判定する方法を解説しました。

特定の文字列を判定するにはdistutils.util.strtobool()を使い、任意の文字列を判定したい場合は「==」と「or」と「if文」を使いましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ