Pythonで文字列を扱っていると、「余分な空白を消したい」「一部の文字を別の文字に置き換えたい」「特定の文字が含まれているか調べたい」といった場面によく出会います。こうした処理は、実はPythonが最初から用意している文字列メソッドを使えば、たった1行で書けてしまいます。
この記事では、初心者の方がまず覚えておきたい文字列メソッドを、大文字・小文字の変換、空白の除去、置換、検索、判定という目的別に整理して解説します。どれも実務でも頻繁に使う基本ばかりなので、サンプルコードを手元で動かしながら読み進めてみてください。
コンテンツ
文字列メソッドとは?
メソッドとは、ある値に対して「.(ドット)」をつけて呼び出せる、その値専用の関数のことです。文字列(str型)に対して使えるメソッドが文字列メソッドで、文字列.メソッド名()という形で書きます。
たとえば "hello".upper() と書くと、「hello という文字列を大文字にする」という意味になり、結果として "HELLO" が返ってきます。とてもシンプルですね。まずは代表的なものから見ていきましょう。
大文字・小文字を変換する(upper / lower / capitalize / title)
英字の大文字・小文字をそろえたいときに使うメソッドです。ユーザーが入力した文字列を比較する前に、小文字にそろえておく、といった用途でよく使います。
text = "Hello, Python"
print(text.upper()) # HELLO, PYTHON
print(text.lower()) # hello, python
print(text.capitalize()) # Hello, python(先頭だけ大文字)
print("python is fun".title()) # Python Is Fun(単語ごとに先頭大文字)upper()はすべて大文字に、lower()はすべて小文字に変換します。capitalize()は文の先頭だけを大文字に、title()は単語ごとの先頭を大文字にします。目的に合わせて使い分けましょう。
余分な空白を取り除く(strip / lstrip / rstrip)
フォームから受け取った文字列などには、前後に余分な空白が含まれていることがあります。そのまま比較すると意図せず不一致になってしまうため、strip()で除去しておくのが定番です。
s = " こんにちは "
print(s.strip()) # こんにちは(前後の空白を除去)
print(s.lstrip()) # 左側の空白だけ除去
print(s.rstrip()) # 右側の空白だけ除去
# 引数を渡すと、指定した文字を端から取り除ける
url = "https://example.com/"
print(url.rstrip("/")) # https://example.com引数を渡さなければ空白や改行が対象になりますが、rstrip("/")のように文字を指定すると、その文字を端から取り除けます。URLの末尾スラッシュを消したいときなどに便利です。
文字列を置換する(replace)
文字列の一部を別の文字に置き換えるにはreplace()を使います。第1引数に「置き換え前」、第2引数に「置き換え後」を渡すだけです。カンマや単位を取り除いて数値に変換したいときにも活躍します。
text = "Python は たのしい"
print(text.replace("たのしい", "おもしろい"))
# Python は おもしろい
# カンマや単位を消して数値に変換する
price = "1,000,000円"
num = price.replace(",", "").replace("円", "")
print(int(num) + 500) # 1000500replace()は該当する箇所をすべて置き換えます。上の例のように.replace(...).replace(...)とつなげて書くこともできます。文字列を区切り文字で分割・結合したい場合は、splitとjoinを使う方法もあわせて覚えておくと便利です。
文字列を検索する(find / count / in)
特定の文字が「どこにあるか」「いくつあるか」「含まれているか」を調べるメソッドです。
text = "banana"
print(text.find("a")) # 1(最初に見つかった位置=インデックス)
print(text.find("z")) # -1(見つからないと -1 を返す)
print(text.count("a")) # 3(出現回数)
print("ana" in text) # True(含まれているかは in が手軽)find()は最初に見つかった位置を返し、見つからなければ-1を返します。単に「含まれているかどうか」を知りたいだけなら、in演算子を使うほうが直感的で読みやすいです。
文字列を判定する(startswith / endswith / isdigit)
文字列が特定の条件を満たすかどうかを、True/Falseで返してくれるメソッドです。ファイルの拡張子チェックや、入力が数字だけかどうかの確認などに使えます。
print("image.png".endswith(".png")) # True
print("https://example.com".startswith("https")) # True
print("12345".isdigit()) # True(数字だけかどうか)
print("Hello".isalpha()) # True(英字だけかどうか)入力された文字列が数字だけかどうかをisdigit()で確認し、そのうえで整数に変換する、といった使い方が定番です。文字列を数値に変える方法は型変換(キャスト)の記事で詳しく解説しています。
実践:文字列メソッドを組み合わせてみよう
ここまでのメソッドは、組み合わせることで一気に実用的になります。前後の空白を消し、カンマで分割し、必要な部分を大文字にする、という一連の処理を書いてみましょう。
raw = " Taro,Yamada,Tokyo "
parts = raw.strip().split(",") # 空白を消してから分割
print(parts) # ['Taro', 'Yamada', 'Tokyo']
name = parts[0].upper()
print(f"氏名: {name}") # 氏名: TAROこのように、メソッドは「.」でつないで次々と処理を重ねられます。結果を表示するときに使ったf"氏名: {name}"のような書き方については、f文字列(f-string)の使い方で詳しくまとめていますので、あわせてご覧ください。
文字列メソッドを使うときの注意点
文字列メソッドで一番つまずきやすいのが、「メソッドを呼んでも元の文字列は変わらない」という点です。Pythonの文字列はイミュータブル(変更できない)なので、メソッドは新しい文字列を返すだけで、元の変数はそのまま残ります。
text = "python"
text.upper()
print(text) # python(元の文字列は変わっていない!)
text = text.upper()
print(text) # PYTHON(代入して初めて反映される)「変換したはずなのに変わらない」という場合は、この代入を忘れていることがほとんどです。メソッドの戻り値をしっかり変数に受け取るクセをつけておきましょう。
もっと効率的にPythonを学びたい人へ
文字列メソッドのように、Pythonには覚えると便利な機能がたくさんあります。独学でも十分に学べますが、「エラーの原因が分からず先に進めない」「体系立てて最短で身につけたい」と感じたら、プロに教わるのも有力な選択肢です。
マンツーマン指導のスクールなら、未経験からのPython習得はもちろん、つまずいたその場で質問して解決できるのが強みです。転職サポートが用意されているところも多く、まずは無料カウンセリングで学習プランや費用感を相談してみるとよいでしょう。
※本記事には広告(アフィリエイトリンク)を含みます。
Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】![]()
まとめ
今回は、Pythonの基本となる文字列メソッドを目的別に解説しました。最後に要点を振り返っておきましょう。
upper() / lower()で大文字・小文字を変換できるstrip()で前後の余分な空白を取り除けるreplace()で該当箇所をすべて置換できるfind()やinで文字列を検索・判定できるstartswith() / endswith() / isdigit()で条件をTrue/Falseで判定できる- 文字列はイミュータブルなので、メソッドの戻り値は代入して受け取る
文字列メソッドは、データの整形やチェックであらゆる場面に登場する必須スキルです。まずはこの記事のサンプルを実際に動かして、少しずつ手になじませていきましょう。
ナノトイラボ 