みなさんこんにちは、現役エンジニアのサメハックです
未経験から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”は無かったよ!
“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だよ!
‘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フォローしてもらえると嬉しいです🦈