Pythonで文字列の変え方がわからない方もいるかもしれません。文字列を変えるには、「replace」の使い方を覚えると良いでしょう。これはプログラミングメソッドのひとつで、特定の書き方により、文字列を希望どおりに変えられます。使い方をマスターすれば、データの更新や修正などに役立つでしょう。今回はPythonのテクニックを勉強中の方へ、replaceのやり方を紹介します。
Pythonにおけるreplaceとは
replaceとはPythonにおけるテクニックのひとつです。特定の文字列と、置換後の文字列を指定できます。指定の文字列が置換前の内容に含まれていれば、そこが置換後の文字列に変わるしくみです。以上から語句や内容の書き換えに用いられます。
たとえば置換前の文字列が「25」、置換後の文字列が「32」とします。この場合「25」と書かれていた箇所が「32」に書き換えられる形です。置換回数の指定なども交え、柔軟に活用できます。このようにreplaceは、内容を効率的に書き換えるテクニックです。プログラミングに関連する仕事を目指すなら、覚えておきましょう。
Pythonのreplaceによる文字列の置換方法
Pythonのreplaceでは、文字列の置換方法が決まっています。最大置換回数の指定や、複数の文字列置換など、さまざまなテクニックを覚えましょう。ここではreplaceの正しい使い方を、状況に応じて解説します。
基本的なreplaceの仕方
まずは一般的なreplaceの方法を覚えてください。基本は文字列を決め、置き換えたい内容を指定する形です。ここでは文字列(str)のreplace()メソッドを用います。第一引数に置換前の文字列、第二引数には置換後の文字列を決めましょう。たとえば以下のとおりです。
s = 'aple'print(s.replace('aple', 'apple'))
出力結果:apple
以上で新しい内容への置換が決まります。例では「aple」を「apple」に修正しました。一方、置換後文字列が「’ ‘」のように空白だと、該当箇所は削除されます。つまり間違った情報は置き換えるだけでなく、消してもよいのです。このようにreplaceは、情報の訂正や削除に役立ちます。
最大置換回数の指定
replaceは第三引数に対し、最大置換回数を指定できます。プログラミングで置換後の情報は、左から順番に置換されるしくみです。一方最大置換回数が決まっていれば、その回数を超える分は置換されません。最大置換回数の指定で、情報の置換範囲をコントロールできるのです。最大置換回数の指定は、以下のように行います。
s = 'apple apple apple orange'print(s.replace('apple', 'banana', 2))
出力結果:banana banana apple orange
例では「apple」から「banana」への置換を指定しましたが、最大置換回数は2です。そのため3つ目の「apple」だけが「banana」に変わっていません。このように最大置換回数の指定は、正確な修正に役立ちます。
複数の文字列の置換
Pythonでは一度に複数の文字列を変換できます。replace()を繰り返し適用すれば、大幅な内容修正も可能です。これが使えると、情報修正の時間短縮ができます。ユーザーにとっては、効率的に情報を書き換えられるでしょう。複数の文字列の置換では、以下の方法を使います。
s = 'apple banana apple'print(s.replace('apple', 'orange').replace('banana', 'grape'))
出力結果:orange grape orange
このように「apple」は「orange」に、「banana」は「grape」への同時置換になります。printの行で、複数のreplaceの条件を出せば、それだけの同時置換が可能です。replaceでは、複数の文字列を書き換えたい場合もあるでしょう。printの行に複数の条件を出せばよいだけなので、比較的難しくないでしょう。
文字列の交換
文字列を入れ替える場合は、一手間がかかります。正確なやり方を知らないと、以下のように失敗するので要注意です。
s = 'apple orange banana'print(s.replace('apple', 'orange').replace('orange', 'apple'))
出力結果:apple apple banana
ここでは「apple orange banana」を「orange apple banana」に書き換えようとしましたが、失敗しています。replaceは、文字列の左から順番どおりに実行されるしくみです。最初の置換先文字列が、以降の置換条件に含まれていると、そこも置換されます。上記では最初にappleをorangeに置換した結果、次の置換先でまたappleに変えられました。そのため最初のappleが、実質的に置換されていません。
この場合は置換先文字列を一旦別の内容に換え、そこから本当の置換先文字列を指定しましょう。やり方は以下のとおりです。
s = 'apple orange banana'print(s.replace('apple', 'X').replace('orange', 'apple').replace('X’, 'orange'))
出力結果:orange apple banana
以上で文字列の交換は完了です。置換前と置換後で、それぞれ同じ文字列を含む場合は、ミスがないように気をつけましょう。
改行文字の置換
改行文字が一種類のみなら、replace()の第一引数で決められます。やり方は以下のとおりです。
s_lines = 'apple\norange\nbanana'print(s_lines)
出力結果:
apple
orange
banana
print(s_lines.replace('\n', '-'))
出力結果:apple-orange-banana
「\」は半角バックスラッシュと読み換えてください。上記のように改行を含む範囲も、replaceで修正可能です。
replaceで置換できないときの対処法
状況次第でreplaceがうまくいかないこともあるでしょう。置換に失敗するときは、やり方が間違っているかもしれません。たとえば大文字と小文字が間違っているせいで、置換できないこともあります。たとえば以下の場合です。
string = "Apple apple apple"print(string.replace("apple", "banana",))
出力結果:Apple banana banana
上記では「apple」だけが「banana」に変換され、「Apple」はそのままです。Pythonは大文字と小文字を区別するため、頭文字が大文字の「Apple」が影響を受けませんでした。以上から置換前の文字列や置換条件の指定では、大文字と小文字を含め、正確に内容を決めなければいけません。
replace以外の文字列の置換方法
replace以外にも、文字列の置換方法はあります。ここではtranslateやre.subの例を見ていきましょう。
translateで複数文字列を置換
translateは一定の長さの文字列を指定し、置換する方法です。複数文字を一括へ変換したい場合は、この方法が役に立ちます。基本的なやり方は以下のとおりです。
string = "red"print(string.translate(str.maketrans({"r": "o", "e": "r", "d": "ange"})))
出力結果:orange
このような形で「red」を「orange」に変換しました。また上記の「ange」のように、置換後の文字は複数でも認められます。このようにtranslateは、従来のreplaceより効率的に内容を書き換えられるのです。
re.subで正規表現を用いて置換
re.subは正規表現を使った置換方法です。正規表現はパターン化した文字列による記法で、同パターンの文字列を一括で置換できます。従来のreplaceやtranslateはstr型だったのに対し、re.subはreモジュールの関数です。そのため使用前はインポートする必要があります。基本的なやり方は、以下のとおりです。
import restring = "apple apricot banana"print(re.sub("a[a-z]*","grape", string))
出力結果:grape grape banana
上記では第一引数に対し、正規表現で表示する置換前文字列を設けました。続いて第二引数は置換後文字列、第三引数は対象文字列を定めています。その結果「a」から始まる2つの語句は、いずれも「grape」に変わりました。Re.subは特殊なやり方ですが、慣れれば効率的に内容を書き換えられます。
Pythonのreplaceのまとめ
Pythonのreplaceは、情報の書き換えに有用です。replaceにもさまざまな置換パターンがあるので、マスターすれば効率的に使いこなせるでしょう。replaceは基本的な置換方法で、プログラミング初心者でも活用できます。今後プログラミングの勉強や仕事をする方は、是非覚えておきましょう。