Python入門! 文字列置換の必須スキル!replaceメソッドの使い方を徹底解説

2025.10.29
カテゴリー:DX,オフショア開発,開発

 

Pythonで文字列を処理するときに、最もよく使われる機能の一つがreplaceメソッドです。特定の文字や単語をまとめて変えたい」「余計な記号を消したい」「置換回数をコントロールしたいといったニーズに応えてくれるのが str.replace()です。

 

この記事では、プログラミング初心者の方でもスッと理解できるように、基本構文から実務で役立つテクニックまで、わかりやすく解説していきます。

replaceメソッドの基本

 

基本構文

文字列.replace(old, new, count)

 

  • old:置き換えたい文字列
  • new:新しい文字列
  • count(省略可):置換する回数。省略すると全て置換

 

基本的な使い方

text = “I like apples.”

new_text = text.replace(“apples”, “oranges”)

print(new_text)  # I like oranges.

 

ポイントは、元の文字列は変更されず、新しい文字列が返ってくることです。既存の変数に上書きしたい場合は text = text.replace(…) と書けばOKです。

 

部分的に置換する方法

先頭から指定回数だけ置換

text = “apple apple apple”

new_text = text.replace(“apple”, “orange”, 2)

print(new_text)  # orange orange apple

 

countに「2」を指定すると、先頭から2回だけ置換されます。

 

大文字・小文字に注意

replaceは大文字・小文字を区別します。

text = “Python python PyThOn”

print(text.replace(“python”, “Java”))  # Python Java PyThOn

 

全部置換したい場合は、あらかじめ lower() や upper() で文字列を統一するのがコツです。

 

置換前後のチェック方法

データ整形や自動処理では、置換結果を検証することが重要です

 

original = “price: $100”

converted = original.replace(“$”,”¥”)

if original != converted:

    print(“置換されました:”, converted)

 

置換が正しく行われたかどうかを自動で確認できます。

 

複数の文字列をまとめて置換する方法

連続してreplaceを使う

text = “red green blue”

text = text.replace(“red”, “RED”).replace(“green”, “GREEN”)

print(text)

 

シンプルな場合は連続して書けばOKです。

 

辞書+ループで一括置換

text = “I like apples and bananas.”

replacements = {“apples”:”oranges”,”bananas”:”grapes”}

for old,new in replacements.items():

    text = text.replace(old,new)

print(text)

 

複数の単語を一度に変えたい場合に便利です。

 

 

実務で役立つ置換テクニック集

 

記号や数字の削除・変換

text = “TEL:03-1234-5678”

print(text.replace(“-“, “”))  # TEL:0312345678

 

電話番号などのハイフンをまとめて削除できます。

 

改行・タブ文字を削除

text = “Hello\nWorld\t!”

cleaned = text.replace(“\n”, ” “).replace(“\t”, ” “)

print(cleaned)

 

改行・タブ文字を空白に置換すれば、整形された1行テキストが作れます。

 

CSVやログの整形

row = “Alice,25,Female”

print(row.replace(“,”, “\t”))  # タブ区切りに変換

 

ログ解析やデータクレンジングで便利です。

 

リスト内での一括置換

words = [“apple”,”banana”,”apple”]

words = [w.replace(“apple”,”orange”) for w in words]

print(words)

 

リスト内包表記で一気に置換できます。

 

pandasでの一括置換

import pandas as pd

df = pd.DataFrame({“fruit”: [“apple”, “banana”, “apple”]})

df[“fruit”] = df[“fruit”].str.replace(“apple”, “orange”)

print(df)

 

# 辞書を使った複数置換

df = df.replace({“fruit”: {“banana”: “grape”, “orange”: “melon”}})

print(df)

大量データを扱う場合、pandasを使うと高速かつ簡単です。

 

replaceと正規表現re.subの違い

 

replaceは固定文字列しか扱えませんが、パターンにマッチする文字列を置換したい場合はre.subが便利です

 

import re

text = “My number is 123-456-7890.”

new_text = re.sub(r”\d”, “X”, text)

print(new_text)  # My number is XXX-XXX-XXXX.

 

  • replace:単純な置換に高速
  • re.sub:正規表現パターンに柔軟に対応

 

複雑な条件置換をしたいときは re.sub を使いましょう。

 

実務でありがちなエラーと対策

AttributeError が出る場合の対処法

replace()メソッドは「文字列」専用です。Noneや数値など、文字列以外のデータに対して使うと

 

AttributeError: ‘NoneType’ object has no attribute ‘replace’

 

のようなエラーが発生します。

 

エラーを防ぐには、事前に型をチェックしたり、文字列に変換してからreplace()を使いましょう。

 

value = None

# 型をチェックしてからreplaceを実行

if isinstance(value, str):

    value = value.replace(“old”, “new”)

else:

    print(“文字列ではありません”)

# もしくは文字列に変換してから置換

value = str(value).replace(“old”, “new”)

 

文字コードによる置換ミスの回避

全角・半角やエンコーディングの違いにより、想定通りに置換されないことがあります。

 

text = “こんにちは 世界”  # 全角スペースあり

print(text.replace(” “, “_”))  # 半角スペースを置換 → 全角は置換されない

 

この場合、全角スペース「 」と半角スペース「 」を別々に指定するか、事前に文字コードを統一します。

 

# 文字コードを統一する例

text = text.encode(“utf-8”).decode(“utf-8”)

text = text.replace(“ ”, ” “)  # 全角スペースを半角に置換

 

こうしておくと、文字コードの違いによる置換漏れを防ぎやすくなります。

条件分岐で不要な置換を防ぐ方法

「特定の条件のときだけ置換したい」場合は、if文を使って条件をつけましょう。

 

text = “Price: $100”

# $ が含まれているときだけ置換する

 

if “$” in text:

    text = text.replace(“$”, “¥”)

print(text)  # Price: ¥100

 

このように条件分岐を組み合わせることで、必要なときだけ安全に置換できます。

このように「型チェック」「文字コード統一」「条件分岐」を意識しておくと、実務レベルでもreplace()をより安心して使えます。

 

よくある疑問Q&A

置換結果を同じ変数に上書きしていいですか?

問題ありません。

例えば、

 

text = “I like apples.”

text = text.replace(“apples”, “oranges”)

print(text)  # I like oranges.

 

のように書けば、元のtext変数の内容が置換後の文字列で上書きされます。新しい変数を作る必要はありません。

 

全角スペースや半角スペースをまとめて置換する方法はありますか?

可能です。文字コードを意識して、置換したいスペースごとに指定しましょう。

 

text = “こんにちは 世界”  # 「こんにちは」と「世界」の間に全角スペースあり

text = text.replace(“ ”, ” “)  # 全角スペースを半角スペースに置換

print(text)  # こんにちは 世界

 

このように全角スペースと半角スペースを区別して置換するのがコツです。

 

Q3. 一度に複数の条件で文字列を置換する方法は?

方法は主に2つあります。

連続してreplaceを使う

text = “red green blue”

text = text.replace(“red”, “RED”).replace(“green”, “GREEN”)

print(text)  # RED GREEN blue

 

辞書+ループで一括置換する

text = “I like apples and bananas.”

replacements = {“apples”: “oranges”, “bananas”: “grapes”}

for old, new in replacements.items():

    text = text.replace(old, new)

print(text)  # I like oranges and grapes.

 

複数の単語や記号を一気に置換したいときには、辞書を使う方法がとても便利です。

 

まとめ

Pythonでの文字列処理において、replaceメソッドはまさに基礎中の基礎といえる存在です。count引数を使えば置換回数を自由にコントロールでき、単純な置換はreplace、複雑なパターンを扱いたいときにはre.subを使い分けることで、より柔軟な処理が可能になります。

 

また、pandasやリスト内包表記を活用すれば、大量データの置換作業も効率的に行えます。エラー処理や文字コードの違いに気をつけることで、実務においても強力な武器となるでしょう。

 

文字列処理はPythonを学ぶうえで欠かせないスキルであり、Web開発・データ分析・機械学習など幅広い分野で活用できます。ぜひこの記事を参考に、replaceメソッドをしっかり身につけてください。

さらに、自社システムでのデータ処理効率化や文字列操作の自動化をご検討中の方は、ぜひ 3ink にご相談ください。現場に即した最適なソリューションをご提案いたします。