この記事では、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:
# それ以外だった場合の処理
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文」を使いましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ