replace(str、文字列)
このページでは豊富な例を用いてPythonのstrクラスのreplaceの使い方を学ぶことができます。
replaceはstrクラスのメソッドの1つであり、
呼び出し元の文字列の部分文字列を、任意の文字列へ置換した文字列を戻り値(返り値)として返します。
第1引数に置換対象の文字列、第2引数に置換後の文字列を指定します。
第3引数に数値を指定することで先頭から置換する文字列の個数を指定することもできます。
また、replaceは呼び出し元の文字列自体を変更しない、非破壊的なメソッドです。
# 定義
str.replace(old, new[, count])
出典:replace (strクラス) - Pythonドキュメント
TL;DR
基本
# replaceは呼び出し元の文字列の任意の文字列を置き換えた文字列を返す
string1 = 'ABCDEAB'
replaced_string1 = string1.replace('A', '@')
# 当てはまった文字列すべてが置換される
print(replaced_string1)
==> @BCDE@B
# 元の文字列には変更なし
print(string1)
==> ABCDEAB
string2 = 'ABCDEAB'
replaced_string2 = string2.replace('AB', '-')
print(replaced_string2)
==> -CDE-
# スペースを置換する
string3 = '1 2 3 4 5'
replaced_string3 = string3.replace(' ', '')
print(replaced_string3)
==> 12345
# 改行を置換する
string4 = 'python\njavascript\nkotlin\ngolang'
replaced_string4 = string4.replace('\n', ',')
print(string4)
==> python
==> javascript
==> kotlin
==> golang
print(replaced_string4)
==> python,javascript,kotlin,golang
# listの各要素の文字列を置換する
list1 = ['Apple', 'Banana', 'Kiwi', 'Peach']
for i, e in enumerate(list1):
# 1文字目を小文字に置き換える
replaced_e = e.replace(e[0], e[0].lower())
# そのままだとlist1の要素は変更されないので置換した文字列を代入する
list1[i] = replaced_e
print(list1)
==> ['apple', 'banana', 'kiwi', 'peach']
string5 = 'orange,apple,apple,orange'
replaced_string5 = string5.replace('orange', 'apple')
print(replaced_string5)
==> apple,apple,apple,apple
関連情報:forの使用方法
関連情報:enumerateの使用方法
置換する文字列の数を指定する
# replaceは第3引数に置換される文字列の数を指定できる
string1 = 'ABCDEFABC'
# 第3引数を指定しない場合、当てはまる文字列すべてが置換される
replaced_string1 = string1.replace('B', 'b')
print(replaced_string1)
==> AbCDEFAbC
# 先頭から1つの'B'を置き換える
replaced_string2 = string1.replace('B', 'b', 1)
print(replaced_string2)
==> AbCDEFABC
string2 = 'AAAAAAAAAA'
replaced_string3 = string2.replace('A', '@', 5)
print(replaced_string3)
==> @@@@@AAAAA
# 先頭から0個の'A'を置換する
print(string2.replace('A', '@', 0))
==> AAAAAAAAAA
# 第3引数が負の場合
print(string2.replace('A', '@', -1))
==> @@@@@@@@@@
string3 = 'python,javascript,javascript,python'
replaced_string4 = string3.replace('javascript', 'python', 1)
print(replaced_string4)
==> python,python,javascript,python
解説
# 定義
str.replace(old, new[, count])
出典:replace (strクラス) - Pythonドキュメント
基本
replaceは呼び出し元のstrオブジェクト(文字列)に対して、第1引数で指定した部分文字列が呼び出し元の文字列にあれば、第2引数で指定した文字列に置き換えます。
第3引数(次項を参照)を指定しない場合は、一致した文字列すべてを置き換えます。
replaceは非破壊的なメソッドであるので、呼び出し元の文字列を変更しないことに注意してください。
string1 = 'py,js,go,rb,kt'
replaced_string1 = string1.replace(',', '-')
# 当てはまった文字列すべてが置換される
print(replaced_string1)
==> py-js-go-rb-kt
# 元の文字列には変更なし
print(string1)
==> py,js,go,rb,kt
string2 = '100, 200, 300, 400, 500'
replaced_string2 = string2.replace('00', '')
print(replaced_string2)
==> 1, 2, 3, 4, 5
list1 = ['python', 'java', 'kotlin', 'go']
new_list1 = []
for i, v in enumerate(list1):
replaced_v = v.replace(v, v.upper())
new_list1.append(replaced_v)
# 元のlistに変更はない
print(list1)
==> ['python', 'java', 'kotlin', 'go']
print(new_list1)
==> ['PYTHON', 'JAVA', 'KOTLIN', 'GO']
関連情報:forの使用方法
関連情報:enumerateの使用方法
置換する文字列の数を指定する
replaceに第3引数をint型で指定することで、置換する文字列の数を指定することができます。
第3引数は任意であり、指定しない場合は-1
がデフォルト値として設定されています。
デフォルト値の-1
は第3引数を指定しない場合の挙動と同じになり、一致するすべての文字列を置換します。
string1 = '1-2-3-4-5'
# 当てはまる文字列すべてが置換される
replaced_string1 = string1.replace('-', '=')
print(replaced_string1)
==> 1=2=3=4=5
# 先頭から2つの'-'を置き換える
replaced_string2 = string1.replace('-', '=', 2)
print(replaced_string2)
==> 1=2=3-4-5
string2 = 'py,js,py,js,js,js'
print(string2.replace('js', 'py', 1))
==> py,py,py,js,js,js
print(string2.replace('js', 'py', 0))
==> py,js,py,js,js,js
print(string2.replace('js', 'py', -1))
==> py,py,py,py,py,py