Pythonの文字列メソッド完全ガイド!使い方と実行例を一覧で解説
Pythonには、文字列に対して直接使える組み込みメソッドが多数用意されています。これらを活用することで、大文字・小文字の変換、部分文字列の検索、文字列の分割や結合など、日常的なテキスト処理を簡単に実装できます。
この記事では、Python 3で利用できる主な文字列メソッドをカテゴリ別に整理し、それぞれの使い方を実行例とともにわかりやすく解説します。
大文字・小文字を変換するメソッド
capitalize()
文字列の先頭の1文字を大文字にし、残りをすべて小文字にしたコピーを返します。
>>> mystring = "hello python" >>> print(mystring.capitalize()) Hello python
casefold()
casefold(大文字小文字の違いをなくした形式)に変換した文字列を返します。大文字小文字を区別せずに比較したい場合に便利です。
>>> mystring = "hello PYTHON" >>> print(mystring.casefold()) hello python
lower() / upper()
lower()は文字列をすべて小文字に、upper()はすべて大文字に変換します。
>>> a = "Python" >>> print(a.lower()) python >>> mystr = "hello Python" >>> print(mystr.upper()) HELLO PYTHON
swapcase()
大文字を小文字に、小文字を大文字に入れ替えた文字列を返します。
>>> mystr = "Hello PYthon" >>> print(mystr.swapcase()) hELLO python
title()
各単語の先頭の文字を大文字に変換します。
>>> mystr = "HELLO JAVA" >>> print(mystr.title()) Hello Java
文字列の状態を判定するメソッド(真偽値)
以下のメソッドは、条件を満たす場合にTrue、満たさない場合にFalseを返します。
- isalnum():すべての文字が英数字の場合にTrue
- isalpha():すべての文字がアルファベットの場合にTrue
- isdecimal():すべての文字が10進数の場合にTrue
- isdigit():すべての文字が数字の場合にTrue(上付き数字なども含む)
- isnumeric():すべての文字が数値の場合にTrue
- isidentifier():文字列が有効な識別子(変数名など)の場合にTrue
- islower() / isupper():すべて小文字/大文字の場合にTrue
- isspace():すべての文字が空白文字の場合にTrue
- isprintable():すべての文字が印刷可能な場合にTrue
- istitle():タイトルケースの規則に従っている場合にTrue
>>> mystr = "HelloPython" >>> print(mystr.isalnum()) True >>> a = "$*%!!!" >>> print(a.isalnum()) False >>> c = "133" >>> print(c.isdigit()) True >>> c = "_user_123" >>> print(c.isidentifier()) True >>> c = "\t" >>> print(c.isspace()) True
startswith() / endswith()
startswith()は指定した接頭辞で始まるかどうか、endswith()は指定した接尾辞で終わるかどうかを判定します。
>>> mystr = "Hello Python"
>>> print(mystr.startswith("Hell"))
True
>>> mystr = "Python"
>>> print(mystr.endswith("hon"))
True
文字列を検索するメソッド
find() / rfind()
find()は部分文字列が最初に見つかった位置(インデックス)を返し、rfind()は最後に見つかった位置を返します。見つからない場合は-1を返します。
>>> mystring = "Python"
>>> print(mystring.find("on"))
4
>>> mystr = "Hello-Python"
>>> print(mystr.rfind("P"))
6
>>> print(mystr.rfind("z"))
-1
index() / rindex()
find()やrfind()と同様に位置を返しますが、部分文字列が見つからない場合は-1ではなくValueError例外が発生する点に注意してください。
>>> mystr = "HelloPython"
>>> print(mystr.index("P"))
5
>>> print(mystr.rindex("z"))
ValueError: substring not found
count()
指定範囲[start, end]内における部分文字列の重複しない出現回数を返します。
>>> mystr = "Hello Python"
>>> print(mystr.count("o"))
2
>>> print(mystr.count("th"))
1
文字列を置換・変換するメソッド
replace(old, new[, count])
指定した文字列を新しい文字列に置き換えます。第3引数countを指定すると、置換する最大回数を制限できます。
>>> mystr = "Hello Python. Hello Java. Hello C++."
>>> print(mystr.replace("Hello", "Bye"))
Bye Python. Bye Java. Bye C++.
>>> print(mystr.replace("Hello", "Hell", 2))
Hell Python. Hell Java. Hello C++.
maketrans() / translate(table)
maketrans()で文字対応表(変換テーブル)を作成し、translate()に渡すことで文字単位の一括変換が可能です。
>>> frm = "helloPython" >>> to = "40250666333" >>> trans_table = str.maketrans(frm, to) >>> secret_code = "Secret Code".translate(trans_table) >>> print(secret_code) S0cr06 C3d0
encode(encoding="utf-8", errors="strict")
文字列をエンコードし、bytesオブジェクトとして返します。デフォルトのエンコーディングはutf-8です。errors引数には「strict」(エラー時にUnicodeErrorを発生)、「ignore」、「replace」、「xmlcharrefreplace」、「backslashreplace」などを指定できます。
>>> mystr = 'python!'
>>> print(mystr.encode("ascii", "ignore"))
b'python!'
文字列を分割・結合するメソッド
split(sep=None, maxsplit=-1) / rsplit()
指定した区切り文字で文字列を分割し、リストを返します。rsplit()は右側から分割を行います。
>>> mystr = "Hello Python" >>> print(mystr.split()) ['Hello', 'Python'] >>> mystr = "Hello-Python-Hello" >>> print(mystr.rsplit(sep="-", maxsplit=1)) ['Hello-Python', 'Hello']
splitlines([keepends])
改行コード(\n、\r\nなど)を基準に文字列を分割し、リストを返します。keepends=Trueを指定すると改行コードも結果に含まれます。
>>> mystr = "Hello:\n\nPython\r\nJava\nC++\n" >>> print(mystr.splitlines()) ['Hello:', '', 'Python', 'Java', 'C++']
join(iterable)
イテラブルの各要素を、呼び出し元の文字列を区切り文字として連結します。
>>> a = "-"
>>> print(a.join("123"))
1-2-3
partition(sep) / rpartition(sep)
指定した区切り文字を基準に文字列を「前・区切り文字・後」の3要素のタプルに分割します。partition()は最初の出現位置、rpartition()は最後の出現位置を基準にします。
>>> mystr = "Hello-Python"
>>> print(mystr.partition("-"))
('Hello', '-', 'Python')
文字列を整形するメソッド
center(width[, fillchar]) / ljust() / rjust()
center()は指定した幅widthの中で中央揃えに、ljust()は左揃えに、rjust()は右揃えにします。余った部分はfillcharで指定した文字(デフォルトは半角スペース)で埋められます。
>>> mystring = "Hello" >>> x = mystring.center(12, "-") >>> print(x) ---Hello---- >>> b = "Hello".ljust(12, "_") >>> print(b) Hello_______ >>> mystr1 = "Hello Python".rjust(20, "-") >>> print(mystr1) --------Hello Python
strip([chars]) / lstrip([chars]) / rstrip([chars])
strip()は両端、lstrip()は左端、rstrip()は右端の空白(または指定した文字)を取り除いた文字列を返します。
>>> a = " Hello " >>> print(a.lstrip(), "!") Hello !
expandtabs(tabsize=8)
タブ文字(\t)を、現在の桁位置と指定したタブ幅に応じたスペースに置き換えます。
>>> mystr = "1\t2\t3" >>> print(mystr.expandtabs(tabsize=15)) 1 2 3
zfill(width)
文字列の先頭を0で埋めて、指定した幅widthまで拡張します。負号がある場合は符号の後ろから0が挿入されます。
>>> mystr = "999" >>> print(mystr.zfill(9)) 000000999 >>> mystr = "-40" >>> print(mystr.zfill(5)) -0040
文字列をフォーマットするメソッド
format(*args, **kwargs)
波括弧{}で囲まれた置換フィールドに、引数の値を埋め込んで文字列を整形します。位置指定やキーワード指定にも対応しています。
>>> print("{} and {}".format("Apple", "Banana"))
Apple and Banana
>>> print("{1} and {0}".format("Apple", "Banana"))
Banana and Apple
>>> print("{lunch} and {dinner}".format(lunch="Peas", dinner="Beans"))
Peas and Beans
format_map(mapping)
format(**mapping)と似ていますが、辞書を直接渡せる点が異なります。dictを継承して__missing__を定義すれば、キーが存在しない場合のデフォルト処理も実現できます。
>>> lunch = {"Food": "Pizza", "Drink": "Wine"}
>>> print("Lunch: {Food}, {Drink}".format_map(lunch))
Lunch: Pizza, Wine
まとめ
Pythonの文字列メソッドを使いこなせば、テキスト処理のコードを大幅に簡潔にできます。特に使用頻度が高いのは、split()、join()、replace()、strip()、format()あたりです。まずはこれらの基本メソッドから確実に覚えていくのがおすすめです。用途に応じて適切なメソッドを選び、効率的な文字列操作を実現しましょう。
-
Pythonのダンダー(マジック)メソッドとは?__repr__や__add__の使い方を実例で解説
Pythonには、オブジェクト指向プログラミングにおいて便利な「技」を可能にするマジックメソッド(ダンダーメソッド)が用意されています。これらのメソッドは、名前の前後に二重のアンダースコア(__)が付いているのが特徴です。特定の条件が満たされたときに自動的に呼び出されるインターセプター(割り込み処理)として機能します。 代表的なものとして、__repr__はオブジェクトの「公式な」文字列表現を返す組み込みメソッドであり、一方の__str__は「非公式な」(人間が読みやすい)文字列表現を返す組み込みメソッドです。 基本例:通常のクラス定義 まず、マジックメソッドを定義していないシンプルなクラスを
-
Pythonで文字列を連結して出力する方法
Pythonでは、文字列に対してプラス(+)演算子を使用すると、それが連結演算子として機能します。つまり、2つ目の文字列を1つ目の文字列の末尾に追加し、ひとつの文字列として結合することができます。基本的な使い方以下のように、+演算子で複数の文字列をまとめ、print()関数で出力できます。>>> s1 = TutorialsPoint >>> s2 = Hyderabad >>> print(s1+s2) TutorialsPoint Hyderabadその他の文字列連結の方法+演算子以外にも、Pythonには文字列を連結する便利な方法が