ここまでに「文字列は変更できない」と述べているが、元の文字列の内容を置き換えた新しい文字列を作成するメソッドもある。既に見た「strip/lstrip/rstripメソッド」もそうしたメソッドである。
ここでは以下のメソッドについて簡単に見ておこう。
以下に例を示す。
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())
以下に実行結果を示す。
各メソッドの動作を確認してほしい。
文字列の先頭が特定のフレーズで始まっているかを調べたり、特定のフレーズで終わっているかを調べたりすることも可能だ。これには以下のメソッドを使用する。
以下に例を示す。
sample_str = 'this is a sample string'
print(sample_str.startswith('this'))
print(sample_str.endswith('string'))
実行結果を以下に示す。
かっこ「()」で囲んで複数のフレーズを指定することも可能だ。この場合、いずれかのフレーズで開始あるいは終了していればTrueが、そうでなければFalseが返される。
sample_str = 'this is a sample string'
print(sample_str.startswith(('that', 'those')))
print(sample_str.endswith(('sample', 'ing')))
以下に実行結果を示す。
なお、これらのメソッドでも調べ始める位置と調べ終わる位置のインデックスを指定可能だ。
Python 3.9以降では文字列が特定の文字列で始まる、または終わる場合に、それらを削除した文字列を返すremoveprefix/removesuffixメソッドが使用できる。
以下に使用例を示す。
sample_str = 'my_document.txt'
print(sample_str.removeprefix('my'))
print(sample_str.removesuffix('.txt'))
実行結果を以下に示す。
文字列の先頭/末尾から特定の文字列を削除するには既に述べたstrip/lstrip/rstripメソッドもあるが、その挙動の違いについては注意しよう。これらは引数に複数の文字を指定すると、それらの文字の組み合わせ全てが削除の対象となる。
例えば、上の例で使った「my_document.txt」という文字列から末尾の「.txt」を取り除きたいとしよう(ファイル名から拡張子を取り除くのはよくある処理だ)。文字列末尾から特定の文字列を削除するにはrstripメソッドが使えそうだ。そこで以下のようなコードを書いたとする。
sample_str = 'my_document.txt'
print(sample_str.rstrip('.txt'))
実行結果を以下に示す。
このように、「my_document」の最後にある「t」まで削除されてしまった。これは上で述べた通り、rstripメソッドなどでは引数に与えた文字列の全ての組み合わせが削除の対象となるからだ。つまり、文字列末尾にある「.」「t」「x」「t」の全てを組み合わせた「t.txt」が取り除かれるからだ。
これでは使い勝手がよくないということで、特定の文字列で始まる/終わる場合にそれらを削除できるように、これら2つのメソッドが追加されている。
文字列を、指定した長さの文字列の中で左寄せ/中央寄せ/右寄せした新しい文字列を作成することも可能だ。
これら3つのメソッドは全て、新しく作成する文字列の長さ(文字数)と元の文字列の左右を埋める文字を引数として受け取る(後者は省略可能で、省略した場合は空白文字で元の文字列以外の部分が埋められる)。よって、これらは「'文字列'.center(文字数, '文字埋めに使う文字')」のような形式で呼び出す。
以下に例を示す。
sample_str = 'Python'
print(sample_str.ljust(12, '+'))
print(sample_str.center(12, '*'))
print(sample_str.rjust(12))
以下に実行結果を示す。
いずれの例も、元の文字列の長さが「6」文字で、新しい文字列の長さを「12」文字としているので、新しく作成する文字列では元の文字列の左右が、指定された文字で埋められる。ただし、最後の例では、rjustメソッド呼び出しで、文字埋めに使う文字を指定していないので、空白文字が使われている。なお、新しい文字列の長さが元の文字列の長さよりも短いときには元の文字列が返される。
今回は、文字列を操作するための関数やメソッド、演算子を実例と共に紹介した。幾つかのメソッドはここでは取り上げていないが、それらについても機会を見て紹介したいところだ。次回は、そうしたメソッドのうち、非常に高機能(なので説明に多くのページが必要)なものであるformatメソッドを取り上げる。
「Python入門」
Copyright© Digital Advantage Corp. All Rights Reserved.