【Python】文字列検索しよう!【find / in】

Python

みなさんこんにちは、現役エンジニアのサメハックです

未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。

Pythonの解説シリーズです。

今回は文字列を検索する方法について学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • 文字列検索が出来るようになる

文字列を検索しよう!

検索の方法は主に2つあるので、以下の順番に解説していきます。

  • find関数
  • in演算子

find()関数

find()関数の構文

検索対象.find(見つけたい文字列)
# 見つかった場合:前から数えて何番目かを返す(0オリジン)
# 見つからなかった場合:-1を返す

find()関数の使用例

txt = 'ABCDEFG'

print(txt.find('C'))
print("------")
print(txt.find('X'))

■ 実行結果

 % python3 find_test.py
2
------
-1

簡単に解説するとこうです。

“C”は前から数えて2番めにあったよ!
“X”は無かったよ!

in演算子

in演算子の構文

検索する文字列 in 検索対象
# 見つかった場合:True
# 見つからなかった場合:False

in演算子の使用例

txt = 'ABCDEFG'

print('C' in txt)
print("------")
print('X' in txt)

■ 実行結果

% python3 in_test.py
True
------
False

AND条件・OR条件

in演算子は、AND条件やOR条件も指定可能です

txt = 'ABCDEFG'

print('C' in txt and 'G' in txt)
print("------")
print('C' in txt and 'X' in txt)
print("------")
print('C' in txt or 'X' in txt)

■ 実行結果

 % python3 in_test.py
True
------
False
------
True

簡単に解説するとこうです。

‘C’も’G’もあったからTrueだよ!
‘C’はあったけど’X’は無かったからFalseだよ!
‘X’は無かったけど’C’はあったからTrueだよ!

応用編:ファイルを開き、特定の文字があれば書き込み

はい、ここからは応用編です。
以下の順番で処理を進めていきます。

  • ファイルを”読み書きモード”で開く
  • ファイルをreadし、特定の文字列を検索する
  • 条件に応じてファイルに書き込み

■ sample.txt

さめハック
いぬハック
ねこハック

■sample.py

# 読み書きモードでsample.txtを開く
with open('./sample.txt', 'r+') as f:
    # ファイルを読み込み、ぶたハックという文字列を探す
    if "ぶたハック" in f.read():
         # 文字列が見つかった場合の処理
        print('既にデータが存在しています!')  
    else:
        # 文字列が見つからなかったので、改行して"ぶたハック"を追記する
        # '\n'は改行コード
        f.write('\nぶたハック')
        print('書き込み完了!')

■ 実行結果

 % python3 sample.py
書き込み完了!

 % cat sample.txt   
さめハック
いぬハック
ねこハック
ぶたハック

 % python3 sample.py
既にデータが存在しています!

補足すると・・・

  • まずサンプルコードを実行し’Kobayashi’を書き込みました
  • catコマンドでsample.txtを確認
  • もう一度サンプルコードを実行。すると既にデータが存在しているのでwriteされなかった
よくある使用例だよ!

まとめ

  • 文字列検索にはfind関数・in演算子が使用出来る
  • indexを取得したい :find関数
  • AND/ORを使用したい:in演算子

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました