pythonの文字列メソッドまとめ

Pythonのstr型は次のような特徴を持っています。

  1. シーケンス
  2. イミュータブル(変更不可能、ただし変更したコピーを返す形では変換できる)
  3. r(right)やl(left)をメソッド名の頭につけた類似したメソッドを多く持つ

この記事ではPythonのstr型に使える操作をPythonの公式ドキュメント(4. 組み込み型 — Python 3.6.5 ドキュメント)からまとめました。これはPython3.6.5版でのものです。

 

シーケンス型に共通の操作

  • x in s
  • x not in s

これらは後述するfindメソッドやindexメソッド、countメソッドと同じ検索だが、「あるかないかが知りたいときは in 、インデックスが知りたいときはfindかindex、回数が知りたいときはcount」と使い分ける。

  • s + t 連結
  • s * n 繰り返し
  • s[i:j:k] スライス
  • len(s) 長さ
  • min(s)
  • max(s)

str型特有のメソッド(44個)

※このうちindex()とcount()はシーケンス型に共通ですが、メソッドなのでわかりやすさのためにこちらに入れました。

1文字列を判別するもの 13個

  • endswith(suffix)

文字列の終わりがsuffixならTrue,違ければFalseを返す。

  • startswith(preffix)

文字列の始まりがpreffixならTrue,違ければFalseを返す。

  • isalnum()

文字列全てが英数字&1文字以上→True

  • isalpha()

文字列全てが英字&1文字以上→True

  • isdecimal()

文字列全てが十進数字&1文字以上→True

  • isdigit()

文字列全てが数字&1文字以上→True

  • isidentifier()

文字列全てが有効な識別子→True

  • islower()

大小の区別がある字が存在&大文字がない→True

  • isnumeric()

文字列全てが数を表す(digitより条件が緩い)&1文字以上→True

  • isprintable()

文字列全てが印字可能or0文字→True

  • isspace()

文字列全てが空白文字&1文字以上→True

  • istitle()

タイトルケース文字列&1文字以上→True

  • isupper() 

大小の区別がある字が存在&小文字がない→True

 

2文字列を検索するもの 5個

※[ ]はその引数が任意なことを表す。

  • find(substring[,start[,end]])

文字列に部分文字列substringがあったら、そのインデックスが最小のもののインデックス、なければ-1を返す。検索範囲を指定できる。

  • index(substring[,start[,end]])

文字列に部分文字列substringがあったら、そのインデックスが最小のもののインデックス、なければValueErrorを返す。検索範囲を指定できる。

  • rfind(substring[,start[,end]])

文字列に部分文字列substringがあったら、そのインデックスが最大のもののインデックス、なければ-1を返す。検索範囲を指定できる。

  • rindex(substring[,start[,end]])

文字列に部分文字列substringがあったら、そのインデックスが最大のもののインデックス、なければValueErrorを返す。検索範囲を指定できる。

  • count(substring[,start[,end]])

文字列中に部分文字列substringが重複せずに出現する回数を返す。

3文字列を除去するもの 3個

  • strip([chars])

文字列の先頭および末尾からcharsを除いたコピーを返す。charsは取り除く文字列ではなく取り除く文字の集合。Ex: char=abcならaとbとcを取り除いていく。charsが省略されたら空白文字を取り除く。

  • lstrip([chars])

文字列の先頭からcharsを除いたコピーを返す。charsは取り除く文字列ではなく取り除く文字の集合。Ex: char=abcならaとbとcを取り除いていく。charsが省略されたら空白文字を取り除く。

  • rstrip([chars])

文字列の末尾からcharsを除いたコピーを返す。charsは取り除く文字列ではなく取り除く文字の集合。Ex: char=abcならaとbとcを取り除いていく。charsが省略されたら空白文字を取り除く。

4文字列の幅を整形するもの 4個

  • center(width)

widthの長さを持つ中央寄せされた文字列を返す。

  • ljust(width)

widthの長さを持つ左揃えされた文字列を返す。

  • rjust(width)

widthの長さを持つ右揃えされた文字列を返す。

  • zfill(width)

長さがwidthになるようにASCII'0'で左詰めした文字列のコピーを返す。

 

5文字列の大文字・小文字を操作するもの 6個

  • upper()

全ての大小文字の区別のある文字を大文字に変換したコピーを返す。

  • lower()

全ての大小文字の区別のある文字を小文字に変換したコピーを返す。

  • capitalize()

文字列の先頭を大文字、残りを小文字にする

  • title()

単語の先頭を大文字、残りを小文字にする。

  • casefold()

大文字小文字に関係ないマッチに使えるコピーを返す。

  • swapcase()

大文字が小文字に、小文字が大文字に変換された文字列のコピーを返す。

6文字列を分割するもの 5個

  • partition(sep)

文字列をsepの最初の出現位置で区切り、区切り前・区切り文字そのもの・区切り後の3要素から成るタプルを返す。

  • rpartition(sep)

文字列をsepの最後の出現位置で区切り、区切り前・区切り文字そのもの・区切り後の3要素から成るタプルを返す。

  • split(sep)

文字列をsepを区切り文字として区切った単語のリストを返す。キーワード引数maxsplitを与えることができる。

  • rsplit()

文字列をsepを区切り文字として右側から区切った単語のリストを返す。キーワード引数maxsplitを与えることができる。

  • splitlines()

文字列を改行部分で分解し、各行からなるリストを返す。

7文字列を変換するもの 7個

strからbytesへ
  • encode()

文字列のエンコードされたバージョンをバイト列オブジェクトとして返す。

tabからspaceへ
  • expandtabs()

文字列内のタブをスペースに変えたコピーを返す。

1:1対応の変換
  • maketrans()

静的メソッド。translateメソッドで使う変換テーブルを作る。

  • translate(table)

与えられた変換テーブルに基づいて文字列を構成する各文字をマッピングし、マッピング後の文字列のコピーを返す。

様々な書式に変換
  • format(*args,**kwargs)

文字列の書式化操作を行う。めっちゃ便利だけど規則が多いので、詳しいことは

6.1. string — 一般的な文字列操作 — Python 3.6.5 ドキュメント

の「6.1.3.1. 書式指定ミニ言語仕様」を見てください。

  • format_map()

formatと似た働きだけど引数がmappingの時にいいことがあるらしい。

特定のものに置き換え
  • replace(old,new)

文字列をコピーし、現れる部分文字列old全てをnewに置換して返す。

8文字列を作成するもの 1個

  • join(iterable)

joinをつける文字列を区切り文字としてiterableを連結し、str型を返す。"".join(iterable)なら区切りなしになる。これはstrへの操作というよりiterableへの操作と思った方が良さそう。