こんにちは、キカガク認定講師の新井です。
この記事では、文字列を置換するときに便利な replace メソッドについてご紹介いたします。実際に Python で実行するための記述方法を、具体的な文字列置き換え事例を交えて紹介します。おおよそ20分で読了できます。
キカガク認定講師 新井
人材業界でWebディレクターとして働く傍ら、独学でデータエンジニアリング、データマネジメントを学び、2023〜2024年にかけてキカガク長期コースを受講。長期コース修了後、データエンジニアへのキャリアチェンジに成功。

学習について無料で相談してみませんか?
独学で悩まれている方へ。理想のキャリアをヒアリングし、カウンセラーが最適な学習方法を一緒に考えます。希望者には講義を無料で体感できるセミナーもご案内!
replace() メソッドとは
基本的な構文と特徴
replace() メソッドは、特定の文字列を別の文字列に置き換えるときに利用します。具体的な構文は以下のとおりです。
※ [ ] 内はオプション(任意記述)です。
置換対象のデータ.replace(置換したい文字列, 置換後の文字列[, 最大置換回数])
replace() メソッドは、構文が非常にシンプルかつ用途が明確なので、初学者でも覚えやすく扱いやすいです。
replace() メソッドの基本的な使用例
サンプルテキストとして以下のデータを準備しておきます。
mission = '''
Our mission - 「あるべき教育で人の力を解放する」
キカガクが考えるあるべき教育とは、人に未来を創る力を与える教育、学びが社会の発展に繋がる教育、教育者も学びを継続し、価値のある知識を伝え続ける持続可能な教育です。
'''
単一の文字置換
文末の「。」を「. 」に置換してみましょう。
print(mission.replace("。", "."))
# 出力
Our mission - 「あるべき教育で人の力を解放する」
キカガクが考えるあるべき教育とは、人に未来を創る力を与える教育、学びが社会の発展に繋がる教育、教育者も学びを継続し、価値のある知識を伝え続ける持続可能な教育です.
replace() メソッドを続けて書くことで、複数の置換を行なうことができます。「。」を「. 」に置換することに加え、「、」を「, 」に置換してみましょう。
print(mission.replace("。", ". ").replace("、", ", "))
# 出力
Our mission - 「あるべき教育で人の力を解放する」
キカガクが考えるあるべき教育とは, 人に未来を創る力を与える教育, 学びが社会の発展に繋がる教育, 教育者も学びを継続し, 価値のある知識を伝え続ける持続可能な教育です.
単語や句の置換
単一の文字だけでなく、単語や句のような文字列も置換可能です。教育という文字列に二重かぎかっこをつけてみましょう。
print(mission.replace("教育", "『教育』"))
# 出力
Our mission - 「あるべき『教育』で人の力を解放する」
キカガクが考えるあるべき『教育』とは、人に未来を創る力を与える『教育』、学びが社会の発展に繋がる『教育』、『教育』者も学びを継続し、価値のある知識を伝え続ける持続可能な『教育』です。
教育という文字列に二重かぎかっこをつけることができました。ただ、今回のサンプルに出てくる「教育者」という文字列に含まれる教育にも二重かぎかっこがふられてしまいました。このようなケースにおける回避策の一例を、後にご紹介いたします。
アルファベットの大文字小文字の区別
Python では、アルファベットの大文字と小文字を別の文字として扱います。次のサンプルコードをご覧ください。
print(mission.replace("O", "Yo"))
# 出力
Your mission - 「あるべき教育で人の力を解放する」
キカガクが考えるあるべき教育とは、人に未来を創る力を与える教育、学びが社会の発展に繋がる教育、教育者も学びを継続し、価値のある知識を伝え続ける持続可能な教育です。
大文字の「O」を置換対象とすることで、 Our が Your になりましたが、 mission に含まれる小文字の「o」はそのままになりました。
replace() メソッドの応用テクニック
置換回数を指定して置換を行なう
「教育」という文字列の置換におけるサンプルを再度考えてみます。教育者という文字列に含まれる「教育」は、サンプルの文章において5回目の出現です。この場合、置換を4回までと限定することで、教育者という単語はそのままにしておくことができます。
置換回数の指定は、前述のとおり replace() メソッドの第3引数で指定可能です。
print(mission.replace("教育", "『教育』", 4))
# 出力
Our mission - 「あるべき『教育』で人の力を解放する」
キカガクが考えるあるべき『教育』とは、人に未来を創る力を与える『教育』、学びが社会の発展に繋がる『教育』、教育者も学びを継続し、価値のある知識を伝え続ける持続可能な教育です。
replace() メソッドの活用シーン
テキスト分析での活用
テキスト分析において、分析の前処理として分析対象のデータの改行をすべて削除する、といった処理を行なう場合があります。改行コードの一括削除のような処理は replace() が得意とします。
データクレンジングでの利用
データクレンジングとは、不要なデータの削除や欠損データの保管、データのフォーマットの統一など「データをきれいにする」ための一連の作業を指します。この中で、フォーマットの統一においては replace() が役立ちます。一例として、データに含まれる数値がカンマ区切り形式だった場合、区切り文字の「,」を削除するなどの処理が挙げられます。
ユーザーによる入力データの処理
元データがユーザーの自由記述テキストだったときなども、フォーマットがユーザーごとに揺れているケースがあります。
例1:氏名間のスペース「佐藤 一郎」「田中二郎」
例2:日付表記「2024/01/01」「2024-04-01」「20241231」
このような場合も、 replace() メソッドを使いデータクレンジングをしておくことで、分析時に扱いやすいデータ環境を作ることができます。
replace() メソッドの性能と注意点
置換元の文字列に指定できるのは固定の文字列のみ
replace() メソッドでは、置換元の文字列を具体的に指定して置換を行ないます。従って、「1つ目の改行より後の文字すべてを削除する」などのように特定のパターンを指定して置換することができません。
このようなケースでは、メタ文字を使ったパターン指定 re.compile() メソッドなどを使う必要がありますが、 replace() ではパターン指定を扱うことができないため、 re.sub() など別のメソッドを使って置換を行なわなければなりません。
replace() メソッドの代替手段
ある1文字を別の1文字に置換する translate() メソッド
replace() の代わりに、 translate() メソッドを使い置換を行なうことも可能です。translate() は、第1引数に置換元の1文字を指定、第2引数に置換後の1文字を指定することで1文字を置換するのが基本的な使い方です。
print(mission.translate(str.maketrans("。", ".")))
# 出力
Our mission - 「あるべき教育で人の力を解放する」
キカガクが考えるあるべき教育とは、人に未来を創る力を与える教育、学びが社会の発展に繋がる教育、教育者も学びを継続し、価値のある知識を伝え続ける持続可能な教育です.
translate() はあくまで1文字を1文字に置換するメソッドなので、1文字を2文字に置換するような記述を行なうとエラーが発生します。状況に応じて replace() と使い分ける必要があります。
print(mission.translate(str.maketrans("Our", "Your")))
# 出力
ValueError: the first two maketrans arguments must have equal length
正規表現を使用した置換
正規表現を利用した置換を行なうことも可能です。Pythonで正規表現を扱う re モジュールについては別の記事で解説していますので、こちらの記事もぜひご覧ください。
まとめ
いかがでしたでしょうか? replace() メソッドを使うことで、特定の文字列を別の文字列に置換することができました。構文も非常にシンプルで使いやすいということが実感いただけたと思います。
記事中でも触れたとおり、データサイエンスの文脈では、データのクレンジングや前処理において文字列の一部変換や一部削除が求められるケースが多くあります。 replace() メソッドをうまく活用することで、効率よく前処理を行なうことができるので、ぜひ習得してください!

学習について無料で相談してみませんか?
独学で悩まれている方へ。理想のキャリアをヒアリングし、カウンセラーが最適な学習方法を一緒に考えます。希望者には講義を無料で体感できるセミナーもご案内!