【Python】空文字列を判断する「not」を利用する方法


Pythonのプログラムでは通常、「空文字列」は「False」と判断されます。
このから文字列を「False」ではなく、「〜ではない」ことを条件としたい場合は、「not」を利用します。


空文字列の判定をする「not」の使い方

空文字列を判定するには色々とやり方があります。
上記でも説明しましたが、空文字列は「False」となりますが、ほかにもFalseになる値があります。

以下ではFalseとなる値の例を表でまとめました。

【Python】Falseとなる値の例
意味
0 整数の0
0.0 実数の0.0
[ ] 空のリスト
( ) 空のタプル
{ } 空の辞書

空文字は、文字列で中身がないことを意味するので、プログラムに書くさいは、「”」というような感じでシングルクォーテーション2つで表現します。

if文を使った「空文字列」の判定

ifには条件となる式を記述します。
以下では比較演算子を使用した書き方と、変数の中身のデータを直接みて判定するプログラムの例を紹介します。

まずは比較演算子を利用したプログラムですが、name変数に空文字列を設定することにより、空の文字列となった場合のプログラムを書いています。

※ not_test.py(文字列がある場合)

name = '太郎'
if name == '':
    print('名前が設定されていません。')
else:
    print(name, 'という名前が設定されています。')

実行結果(文字列がある場合)

$ python3 not_test.py 
太郎 という名前が設定されています。

実行結果(空文字列の場合)

$ python3 not_test.py 
名前が設定されていません。

変数の中身を直接判定するプログラム

以下では直接変数の中身のデータをみて、空文字列を判断するプログラムとなります。
から文字列の場合には、空文字列ではないことを条件にするので「not」を使用します。

name変数で空文字列の場合には「名前が設定されていません。」と出力し、データがある場合はその名前を出力するようにします。

name = ''
if not name:
    print('名前が設定されていません。')
else:
    print('名前は', name, 'です。')

実行結果(文字列がある場合)

$ python3 not_test.py 
名前は 太郎 です。

実行結果(空文字列の場合)

$ python3 not_test.py 
名前が設定されていません。

for文を使った「空文字列」の判定

以下では、辞書やリストなどに入っている値をfor文でチェックし、条件に合致した場合は値いを設定し、forループを終了するプログラムとなります。

次に、変数「response」で、入力された文字列が辞書と一致していれば辞書から文字列を参照し、該当の文字列を出力します。
辞書に登録されている以外の文字列や「空文字列」の場合は、「言ッテイル意味ガ、ワカラナイ」というメッセージを表示します。

dict = {
      'おはよう': 'オハヨウ',
      'こんにちわ': 'コンニチワ',
      'こんばんわ': 'コンバンワ'
      }

command = input('bot> ')
response = ''
for message in dict:
    if message in command:
        response = dict[message]
        break
if not response:
    response = '言ッテイル意味ガ、ワカラナイ'
print(response)

実行結果(for文と文字列の判定の組み合わせのプログラム)

$ python3 not_test.py 
bot> おはようございます。
オハヨウ
$ python3 not_test.py 
bot> どうも。こんにちわ。
コンニチワ
$ python3 not_test.py 
bot> こんばんわ
コンバンワ
$ python3 not_test.py 
bot> ありがとう
言ッテイル意味ガ、ワカラナイ
$ python3 not_test.py 
bot> 
言ッテイル意味ガ、ワカラナイ
$ 

while文を使った「空文字列」の判定

while文の繰り返しで、input()メソッドを利用し、ユーザーからの入力された文字列をcommand変数に設定します。
応答する文字列を格納する変数「response」で返すプログラムです。

上記のfor文と同じく、辞書にはない文字列、または空文字列の場合は、同じ処理をします。
また、追加で、「さようなら」という文字列を入力した場合、「break」でwhileループを終了させます。

dict = {
      'おはよう': 'オハヨウ',
      'こんにちわ': 'コンニチワ',
      'こんばんわ': 'コンバンワ'
      }

while True:
    command = input('bot> ')
    response = ''
    for message in dict:
        if message in command:
            response = dict[message]
            print(response)
            break

    if 'さようなら' in command:
        print('バイバイ')
        break
        
    if not response:
        response = '言ッテイル意味ガ、ワカラナイ'
        print(response)

実行結果(while文と文字列の判定の組み合わせのプログラム)

$ python3 not_test.py
bot> おはようございます。
オハヨウ
bot> どうも。こんにちわ。
コンニチワ
bot> こんばんわ。夜分遅いですね。
コンバンワ
bot> 
言ッテイル意味ガ、ワカラナイ
bot> 
言ッテイル意味ガ、ワカラナイ
bot> ありがとう
言ッテイル意味ガ、ワカラナイ
bot> さようなら。
バイバイ
$ 

notを使用した空文字などの判定は直接判定するプログラムがシンプルになるので利用するようにしましょう。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!