この記事ではPython上で簡単に文字列を検索するメソッドをご紹介したいと思います。
加えて、文字列を置換する方法についても解説していきますね。
もし文字列について詳しく知りたい方は
こちらの記事もあわせてご覧ください。
⇒python特有の文字列操作まとめ
⇒【python入門】文字列を分割したり抽出したりする方法
あと、この記事ではprintを使います。
printについて詳しく知りたい方はこちらの記事をご覧ください。
⇒【python】printで文字列を改行する方法と改行しない方法
それではここから本題に入っていきますね。
目次
メソッドとは?Pythonで文字列を検索する前提のお話
この記事では文字列を検索するための
3つのメソッドについて解説していきます。
そもそも「メソッドって何?」と疑問に感じる方もいるかもしれません。
ここでは簡単にメソッドについて説明しますね。
メソッドとはクラス内に定義された関数のことです。
「よくわかんない」という声が聞こえてきそうですね(苦笑)。
クラスとは簡単にいうと、学校のクラスみたいなものです。
クラスに教室や先生、生徒、掃除のホウキやモップ、
ロッカーなどいろいろありますね。
また、クラスにはルールもあるかもしれません。
風紀委員を2人選ぶとか、毎日クラスで飼育しているカブトムシの世話をするとか。
そういったルールをメソッドという理解でOKです。
クラスの中にメソッドを決めておくことで
クラスのみんなが混乱することなく
スムーズに活動できるわけです。
Pythonでどんな時に文字列を検索するの?2つのパターン
Pythonで文字列を検索する時、
3つのメソッド(教室内のルールみたいなもの)があるって話をしました。
ではどんな時に文字列を検索することがあるのでしょう?
文字列を検索するパターン1.一致している文字列を抽出する時
たとえば、学校のクラスの生徒全員で
1000ページくらいの超大作小説を書いたとしますね。
で、「危機的状況って単語、どこに書いてあったっけ?」
となったときに、1000ページある本のどこに
『危機的状況』って単語があったか、調べるのは面倒です。
今はAIの時代です。
手作業でチマチマと『危機的状況』という単語を探すのなんて
ナンセンスとしか言いようがありません。
そこでメソッドを使って『危機的状況』という文字列を
検索すればよいわけです。
そうすれば一瞬でどのページのどこに
『危機的状況』という単語があるか、
判断することができます。
こんな感じでPythonでは自分が調べたい文字列と
一致している文字列を抽出するときに
3つのメソッドを利用することがあります。
文字列を検索するパターン2.指定した文字列が存在するかチェックする
たとえば、40人いる教室の誰かが
「僕、おそらくスウェーデン人美女って書いたと思うけど
日本人美女の間違いだった」となったとします。
でも1000ページある本の中から
スウェーデン人美女があるかないかを調べるのは
至難の業です。
そこで文字列を検索するメソッドを利用するわけですね。
文字列を検索するメソッドを利用すれば
一瞬で『スウェーデン人美女』という記載があるかどうか
判断することができます。
こんな感じでPythonでも
あなたが書いたコード上で
調べたい文字列があるかどうか
メソッドを使えば一瞬で判断することができるんですね。
それでは具体的にPythonで文字列を検索するための
3つのメソッドについて見ていきましょう。
Pythonで文字列を検索する3つのメソッドとは?
pythonで文字列を検索するメソッドとして
1.startswith
2.find
3.count
があります。
pythonで文字列を検索するメソッド1.startswith
まず、startswithから始めていきましょう。
# 例題1 a = '人工呼吸器' print(a)
実行すると
『人工呼吸器』と表示されますね。
aという変数に『人工呼吸器』という文字列を代入しています。
そしてprint(a)で変数aに入った人工呼吸器という文字列を
表示させたわけですね。
「よくわかりません」
という方、まずは変数から勉強していきましょう。
こちらの記事をご覧ください。
⇒Pythonの変数宣言で注意すべきこと
⇒【Python入門】変数の代入についてわかりやすく解説
話を元に戻します。
# 例題2 a = '人工呼吸器' b = a.startswith('人工') print(b)
例題2を実行すると『True』と表示されます。
ここの肝は
a.startswith('人工')
です。
上記は変数aにstartswithというメソッドをくっつけています。
で、startswithは(”)内に入っている文字列から
始まっているかどうか調べるメソッドです。
もし始まっていたら『True』、
始まっていないなら『False』が
返ってきます。
aという変数には『人工呼吸器』が入っているので
a.startswith('人工')
と『人工』から始まっているか?
ということで、『True』が返ってきたわけですね。
人工呼吸器は『人工』から始まっていますから
Trueですね。
ちなみに
b = a.startswith('人工')
と
a.startswith('人工')
のTrueという答えをbという変数に入れて
print(b)でTrueと表示させています。
では、これはTrueでしょうか、
それともFalseでしょうか。
# 例題3 a = '人工呼吸器' b = a.startswith('人口') print(b)
答えはFalseですね。
『人工』であって『人口』ではありませんからね。
ではこれはTrueでしょうか
それともFalseでしょうか。
# 例題4 a = '人工呼吸器' b = a.startswith('呼吸器') print(b)
正解はFalseですね。
startswithというメソッドは最初の文字が
調べたい文字になっているか、
検索するものです。
『人工呼吸器』は『人』から始まっています。
『呼吸器』という途中の文字から始まっていません。
したがってFalseという結果が
返ってくることになるんです。
こんな感じであなたが検索したい結果を
得ようと思ったら、メソッドについて
きちんと理解しておかないと
エラーやミスの原因になってしまいます。
十分、ご注意ください。
では、こちらはTrueですか、Falseですか?
# 例題5 a = '人工呼吸器' b = a.startswith('人') print(b)
正解はTrueですね。
人工呼吸器は『人』という文字から始まっていますから。
では、こちらはどうでしょう?
# 例題5 a = '人工呼吸器' b = a.startswith('人工呼吸') print(b)
正解はTrueですね。
pythonで文字列を検索するメソッド2.find
findは知りたい文字がどこにあるか
検索してくれるメソッドです。
たとえば
# 例題6 a = '人工呼吸器' b = a.find('呼吸') print(b)
実行すると、
『2』という答えが返ってきましたね。
これは『人工呼吸器』の『人』を0とカウントして
『工』を1、『呼』が2なので
2という答えになるんです。
ではこれはどうでしょう?
# 例題7 a = '人工呼吸器' b = a.find('吸') print(b)
答えは3となります。
人工呼吸器の人を0とカウントした時に
『吸』は3番目なので、3という答えが返ってきたんです。
ではこれはどうでしょう?
# 例題8 a = '人工呼吸器をつけた人' b = a.find('人') print(b)
『人』という文字は人工呼吸器の人とつけた人の人と
2つありますね。
答えは
『0』、つまり初めの人が検索結果として
返ってきました。
ではあとの方の『人』を検索結果に
反映させたい場合にはどうすればよいのでしょう?
# 例題9 a = '人工呼吸器をつけた人' b = a.rfind('人') print(b)
とfindにrをつけましょう。
『rfind』とすればよいです。
そうすると結果は
とあとの『人』が検索され、
9という結果が返ってきましたね。
pythonで文字列を検索するメソッド3.count
countはあなたが探している文字列が
何個入っているか、検索するメソッドです。
たとえば、
# 例題10 a = '人工呼吸器をつけた人' b = a.count('人') print(b)
だと、『人』は2つ入っているので
『2』という答えが返ってきます。
こちらはどうでしょう?
# 例題11 a = 'Hi Hi Hi' b = a.count('Hi') print(b)
『Hi』は3つ入っているので
答えは3になります。
pythonで文字列を置換する方法
文字列を置換する方法もあります。
たとえば、
# 例題12 a = '人工呼吸器' b = a.replace('人工呼吸器','最新の呼吸器') print(b)
これを実行すると『最新の呼吸器』と
表示されます。
「あ、そういえば、スウェーデン人美女って書いたけど
日本人美女の間違いだった」という場合には
# 例題13 a = 'スウェーデン人美女' b = a.replace('スウェーデン人美女','日本人美女') print(b)
とreplaceというメソッドを使うことで
一瞬でスウェーデン人美女を日本人美女と
文字列を置き換えることができるんですね。
文字列の置換は以下の公式を
理解しておいてください。
# 例題14 a = '元の文字列' b = a.replace('元の文字列','置き換え後の文字列') print(b)
という感じで理解してくださいね。
以上でPythonにおける
文字列の検索と置換についての解説を終わります。
pythonを学ぶならこちらの動画講座がおすすめです
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする
かなり長い講座名ですね。
わかりにくそうな感じがします。ですが、pythonの基礎からしっかりとわかりやすく教えてくれます。
また、きれいなコードを書くための方法についても
教えてくれるので、周りが「どうやってそんなコードを書いてるの?」
とびっくりされるようになるかもしれません。それからWebアプリケーション開発の基本的なテクニックについても
教えてくれます。なので、pythonを使ってwebアプリケーションを作ってみようと
思っている方にもおすすめです。値段は時期によって違います。
詳しくはこちらをご覧ください。
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習
この講座ではまずpythonの基礎を学びます。
次に人工知能について学んでいきます。そして最終的にはpythonを使って文字認識や株価分析ができるような技術力が身につくようになっています。
単純に教科書的なpythonを学ぶのではなく
仕事でも使えるスキルを身につけたい方におすすめの講座です。なのに値段は恐ろしいほど安いです。
時期によって値段は変動するので
詳しくはこちらをご覧ください。
Pythonで機械学習:scikit-learnで学ぶ識別入門
この動画講座は広島大学准教授の先生が担当しています。
機械学習が専門の先生です。すごく深い知識が身につきます。
大学の先生の講義って難しそうってイメージがあるかもしれません。でもそんなことはありません。
すごくわかりやすいです。pythonで機械学習のスキルを身につけたい方におすすめです。
値段は時期によって違いますが、かなり、良心的な価格になっています。詳しくはこちらをご覧ください。