replace関数
前回、Pythonで文字列を分割するsplit関数を勉強しました。
今回は前回の記事でちらっと出てきた「replace関数」を勉強していきましょう。
とはいっても実はreplace関数も過去に何度も使っていたりしますが、こうしてまとめるのは初めてです。
それでは始めていきましょう。
replace関数の基礎
まず「replace関数」は「文字列.replace(‘置換したい文字列’, ‘置換後の文字列’)」で文字を置換することができます。
test1 = 'a, b, c, d, e, f'
print(test1.replace('a', 'g'))
実行結果
g, b, c, d, e, f
また「置換したい文字列」が複数ある場合、基本的には全てが置換されます。
test1 = 'a, b, c, d, e, f'
print(test1.replace(',', '.'))
実行結果
a. b. c. d. e. f
置換する文字の個数を設定
先ほどの例では「置換したい文字列」は全て置換されてしまいましたが、置換する文字の個数を設定することも可能です。
その場合は「文字列.replace(‘置換したい文字列’, ‘置換後の文字列’, 置換する回数)」とします。
test1 = 'a, b, c, d, e, f'
print(test1.replace(',', '.', 3))
実行結果
a. b. c. d, e, f
この場合、置換は文字列の左側から行われます。
前回の「split関数」でもそうですが、右側からというのは特別な処理のようです。
そして「split関数」 の場合は右から分割するために「rsplit関数」がありました。
となると「replace関数」には「rreplace関数」があるのかなと思ったのですが、残念ながら無いようです。
test1 = 'a, b, c, d, e, f'
print(test1.rreplace(',', '.', 3))
実行結果
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Input In [15], in <cell line: 3>()
1 test1 = 'a, b, c, d, e, f'
----> 3 print(test1.rreplace(',', '.', 3))
AttributeError: 'str' object has no attribute 'rreplace'
右から置換する方法
それではreplace関数を使って、右から置換する方法はないのでしょうか?
それがちょっとめんどくさい手順を踏むのですがあります。
その手順というのがこちら。
- 文字列の順番を逆にする
- 通常のreplace関数を使って左から置換する
- 再度文字列の順番を逆にする
ちなみに文字列を逆にするには「文字列[::-1]」で逆にできます。
それでは試してみましょう。
test1 = 'a, b, c, d, e, f'
test2 = test1[::-1]
print(test2)
test3 = test2.replace(',', '.', 3)
print(test3)
test4 = test3[::-1]
print(test4)
実行結果
f ,e ,d ,c ,b ,a
f .e .d .c ,b ,a
a, b, c. d. e. f
確かに最終的に右から置換した形になっています。
replace関数で文字を削除する方法
replace関数を使う目的で結構多いのが、文字を削除することでしょう。
文字を削除するには「文字列.replace(‘置換したい文字列’, ‘置換後の文字列’)」で「置換後の文字列」を「”」と何もない文字列に変換してやることでできます。
test1 = 'a, b, c, d, e, f'
print(test1.replace(', ', ''))
実行結果
abcdef
これは特に「 」(半角スペース)や「/n」(改行コード)などを削除するのに便利なので覚えておくといいでしょう。
複数の文字列を置換する方法
これは前回split関数を解説したときにもちらっとお話ししたのですが、replace関数を何度も使うことによって複数の文字列を置換することが可能です。
つまり「文字列.replace(‘置換前文字列1’, ‘置換後文字列1’).replace(‘置換前文字列2’, ‘置換後文字列2’))」と言った感じです。
test1 = 'a, b, c, d, e, f'
print(test1.replace('a', 'g').replace('b', 'h'))
実行結果
g, h, c, d, e, f
replace関数を使った文字列の置換は、文字列を扱う場合には結構頼りになるので、色々な使い方を覚えておくといいでしょう。
次回は文字を取り除く「strip関数」を見ていきましょう。
ではでは今回はこんな感じで。
コメント