
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 にご相談ください。現場に即した最適なソリューションをご提案いたします。
