👨‍💻

PythonとJavaScriptで複数文字を一気に置換したいとき

2025/02/08に公開

PythonとJavaScriptでの文字置換の便利な方法

例えば、a3に、e2に、i1に書き換えたい場合、PythonとJavaScriptでそれぞれ方法を記述。一番簡単な方法でいえば replace を何回も使えば実装可能ではあるが、それだとコード量が多くなってしまうので違う方法を考えた。

Python

Pythonでは、translate()メソッドとstr.maketrans()を使って、一度に複数の文字を置換することができる。

text = "apple pie"

# 置換パターンを辞書で定義
replacements = str.maketrans({
    'a': '3',
    'e': '2',
    'i': '1'
})

# 文字置換を一度に実行
text = text.translate(replacements)

print(text)  # 出力: 3ppl2 p13

また、maketransはもう少し書き方を省略することができ、辞書型として記述しなくてもよい

text = "apple pie"
# 文字置換を一度に実行
text = text.translate(str.maketrans('aei','321'))
print(text)  # 出力: 3ppl2 p13

他にも、リスト内包表記とjoin()メソッドを使って文字列を置換する方法もある。

text = "apple pie"

# 置換パターンを辞書で定義
replacements = {'a': '3', 'e': '2', 'i': '1'}

# 文字を一つずつ置換してリストに格納し、結合する
text = ''.join([replacements.get(char, char) for char in text])

print(text)  # 出力: 3ppl2 p13

さらに、正規表現を使った方法もある。ただし、最初に記述したmaketransの実装が一番簡単ではあると思う。

import re

text = "apple pie"

# 置換パターンを定義
replacements = {'a': '3', 'e': '2', 'i': '1'}

# 正規表現を使って一度に文字置換
text = re.sub('|'.join(replacements.keys()), lambda match: replacements[match.group(0)], text)

print(text)  # 出力: 3ppl2 p13

JavaScript

JavaScriptでは、正規表現と置換パターンを使って、一度に複数の文字を置換することができる。

let text = "apple pie";

// 置換パターンをオブジェクトで定義
const replacements = {
    'a': '3',
    'e': '2',
    'i': '1'
};

// 文字置換を一度に実行
text = text.replace(/[aei]/g, match => replacements[match]);

console.log(text);  // 出力: 3ppl2 p13

また、split()map(), join()メソッドを組み合わせて文字列を置換する方法もある。

let text = "apple pie";

// 置換パターンをオブジェクトで定義
const replacements = {
    'a': '3',
    'e': '2',
    'i': '1'
};

// 文字列を配列に変換し、置換後に再度結合する
text = text.split('').map(char => replacements[char] || char).join('');

console.log(text);  // 出力: 3ppl2 p13

一応思いついたものを記述しましたが、他にも便利な書き方などあればコメント欄でも教えていただけると嬉しいです🙇🙇🙇

Discussion