連載
» 2019年04月19日 05時00分 公開

Python入門:[Python入門]文字列の操作 (4/4)

[かわさきしんじ,Deep Insider編集部]
前のページへ 1|2|3|4       

文字列の置換:replace/swapcase/title/lower/upperメソッド

 ここまでに「文字列は変更できない」と述べているが、元の文字列の内容を置き換えた新しい文字列を作成するメソッドもある。既に見た「strip/lstrip/rstripメソッド」もそうしたメソッドである。

 ここでは以下のメソッドについて簡単に見ておこう。

  • 元の文字列.replace(old, new, count)
    引数:old 置換元の文字列
    引数:new 置換後の文字列
    引数:count 置換を行う回数(省略時は、元の文字列に含まれる全てのoldがnewに置換される)
    戻り値:元の文字列内にある「置換元の文字列」を「置換後の文字列」で置き換えた新しい文字列
  • 元の文字列.swapcase()
    戻り値:元の文字列の大文字/小文字を入れ替えた新しい文字列
  • 元の文字列.title()
    戻り値:元の文字列に含まれている単語の先頭文字だけを大文字にした新しい文字列を作成
  • 元の文字列.lower()
    戻り値:文字列内の全ての英字を小文字にした文字列を新しい作成
  • 元の文字列.upper()
    戻り値:文字列内の全ての英字を大文字にした文字列を新しい作成

 以下に例を示す。

sample_str = 'abc def GHI JKL'
print(sample_str.replace('abc', 'xyz'))
print(sample_str.swapcase())
print(sample_str.title())
print(sample_str.lower())
print(sample_str.upper())

文字列を置換、大文字小文字の入れ替え、単語の先頭だけを大文字化、全て小文字化、全て大文字化

 以下に実行結果を示す。

実行結果 実行結果

 各メソッドの動作を確認してほしい。

特定のフレーズで始まっている/終わっているかを調べる:startswith/endswithメソッド

 文字列の先頭が特定のフレーズで始まっているかを調べたり、特定のフレーズで終わっているかを調べたりすることも可能だ。これには以下のメソッドを使用する。

  • 元の文字列.startswith(prefix)
    引数:prefix それで始まっているかを調べたいフレーズ
    戻り値:文字列がprefixで指定されたフレーズで始まっていればTrue、そうでなければFalseを返す
  • 元の文字列.endswith(suffix)
    引数:suffix それで終わっているかを調べたいフレーズ
    戻り値:suffixで指定したフレーズで文字列が終わっていればTrue、そうでなければFalseを返す

 以下に例を示す。

sample_str = 'this is a sample string'
print(sample_str.startswith('this'))
print(sample_str.endswith('string'))

文字列'this is a sample string'が「this」で始まっているかと、「string」で終わっているかを調べるコード

 実行結果を以下に示す。

実行結果 実行結果

 かっこ「()」で囲んで複数のフレーズを指定することも可能だ。この場合、いずれかのフレーズで開始あるいは終了していればTrueが、そうでなければFalseが返される。

sample_str = 'this is a sample string'
print(sample_str.startswith(('that', 'those')))
print(sample_str.endswith(('sample', 'ing')))

文字列'this is a sample string'が「that」または「those」で始まっているかと、「sample」または「ing」で終わっているかを調べるコード

 以下に実行結果を示す。

実行結果 実行結果

 なお、これらのメソッドでも調べ始める位置と調べ終わる位置のインデックスを指定可能だ。

文字列を左寄せ/中央寄せ/右寄せする:ljust/center/rjustメソッド

 文字列を、指定した長さの文字列の中で左寄せ/中央寄せ/右寄せした新しい文字列を作成することも可能だ。

  • 元の文字列.ljust(width, fillchar)
    引数:width 新しく作成する文字列の文字数
    引数:fillchar 元の文字列の長さよりもwidthの値の方が大きいときには、fillcharに指定した文字で足りない部分が埋められる(省略時は空白文字が使われる)
    戻り値:widthで指定された長さの文字列を作成して、その中で元の文字列を左寄せに位置させる
  • 元の文字列.center(width, fillchar)
    引数:width 新しく作成する文字列の文字数
    引数:fillchar 元の文字列の長さよりもwidthの値の方が大きいときには、fillcharに指定した文字で足りない部分が埋められる(省略時は空白文字が使われる)
    戻り値:widthで指定された長さの文字列を作成して、その中で元の文字列を中央寄せに位置させる
  • 元の文字列.rjust(width, fillchar)
    引数:width 新しく作成する文字列の文字数
    引数:fillchar 元の文字列の長さよりもwidthの値の方が大きいときには、fillcharに指定した文字で足りない部分が埋められる(省略時は空白文字が使われる)
    戻り値:widthで指定された長さの文字列を作成して、その中で元の文字列を右寄せに位置させる

 これら3つのメソッドは全て、新しく作成する文字列の長さ(文字数)と元の文字列の左右を埋める文字を引数として受け取る(後者は省略可能で、省略した場合は空白文字で元の文字列以外の部分が埋められる)。よって、これらは「'文字列'.center(文字数, '文字埋めに使う文字')」のような形式で呼び出す。

 以下に例を示す。

sample_str = 'Python'
print(sample_str.ljust(12, '+'))
print(sample_str.center(12, '*'))
print(sample_str.rjust(12))

center/ljust/rjustメソッドの使用例

 以下に実行結果を示す。

実行結果 実行結果

 いずれの例も、元の文字列の長さが「6」文字で、新しい文字列の長さを「12」文字としているので、新しく作成する文字列では元の文字列の左右が、指定された文字で埋められる。ただし、最後の例では、rjustメソッド呼び出しで、文字埋めに使う文字を指定していないので、空白文字が使われている。なお、新しい文字列の長さが元の文字列の長さよりも短いときには元の文字列が返される。

まとめ

 今回は、文字列を操作するための関数やメソッド、演算子を実例と共に紹介した。幾つかのメソッドはここでは取り上げていないが、それらについても機会を見て紹介したいところだ。次回は、そうしたメソッドのうち、非常に高機能(なので説明に多くのページが必要)なものであるformatメソッドを取り上げる。

今回のまとめ:文字列の操作

  • 文字列の文字数を求めるにはlen関数が使える
  • 文字列の要素はインデックス指定やスライスの指定により取り出せる
  • 文字列の要素は変更できない
  • リテラル文字列は、それらを並べるだけで結合できる。そうでなければ「+」演算子を使う
  • 文字列と数値は「+」演算子で加算(結合)できない
  • 「文字列 * 整数値」「整数値 * 文字列」で「整数値」だけ「文字列」を繰り返したものが得られる
  • 文字列に特定の文字列が含まれているかは、in演算子、find/rfind/index/rindexメソッドで調べられる。前者は存在確認だけを行いたいとき、後者はインデックス位置までを知りたいときに使う
  • 文字列の分割にはsplitメソッドを使う
  • リストの要素を文字列へ結合するにはjoinメソッドを使う
  • 文字列の前後にある空白文字を削除するにはstrip/lstrip/rstripメソッドを使う
  • 文字列が数字/英字などで構成されているかを調べるにはisupper/islower/isdigitメソッドを使う
  • 元の文字列の内容を置換して、新たな文字列を得るにはreplace/swapcase/title/lower/upperメソッドを使う
  • 文字列が特定のフレーズで始まっている/終わっているかを調べるにはstartswith/endswithメソッドを使う
  • 文字列を左寄せ/中央寄せ/右寄せするにはljust/center/rjustメソッド
  • 文字列を変更するメソッドは、元の文字列に対する変更内容を反映した「新しい文字列」を作成する

「Python入門」のインデックス

Python入門

前のページへ 1|2|3|4       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。