この記事では、Pythonで文字列内の単一または複数の文字を置き換える方法について説明します。
Pythonはstr.replace()関数を提供します。つまり
str.replace(old, new , count)
既存の文字列のコピーである新しい文字列オブジェクトを返します。コンテンツ。また、
- countが指定されていない場合は、「old」がすべて出現する文字列が返され、「new」文字列に置き換えられます。
- countパラメータが渡されると、次のようになります。 「古い」文字列の最初の「カウント」オカレンスが「新しい」文字列に置き換えられた文字列を返します。
例で理解しましょう
指定された文字のすべてのオカレンスを置き換えます/文字列内の文字列
文字列があるとします。
mainStr = "Hello, This is a sample string"
ここで、のすべての出現箇所を置き換えます。 ‘with’ X’ie
"""Replace all occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "X")
otherStrの内容は次のとおりです。
Hello, ThiX iX a Xample Xtring
As文字列はPythonでは不変であるため、その内容を変更することはできません。したがって、replace()などのメンバー関数は新しい文字列を返します。
replace()関数でcountパラメータを指定していないため。したがって、「s」のすべての出現箇所が「X」に置き換えられます。しかし、すべてではなく最初の数回だけを置き換えたい場合はどうでしょうか。その方法を見てみましょう。
文字列内の最初のn個の文字/部分文字列を置き換えます
文字列があるとします。
mainStr = "Hello, This is a sample string"
ここで、「s」の最初の2つのオカレンスを「XXXS」に置き換えます。つまり、
"""Replace First 2 occurrences of given character or string in main string"""otherStr = mainStr.replace("s" , "XXXS", 2)
otherStrの内容は次のとおりです。
Hello, ThiXXXS iXXXS a sample string
countパラメーターを2として渡したため、返されるコピーでは最初の2つの「s」のみが置き換えられます。
複数の文字を置き換えます文字列内の/ strings
str.replace()関数は、指定された1つの部分文字列のみの出現を置き換えることができます。しかし、特定の文字列内の複数のサブ文字列を置き換えたい場合はどうなりますか?
文字列があるとします。
mainStr = "Hello, This is a sample string"
ここで、これら3つの文字「s」、「l」、「a」のすべての出現箇所をこの文字列「AA」に置き換える方法は?
replace()上に新しい関数を作成して、それを実行しましょう。
"""Replace a set of multiple sub strings with a new string in main string."""def replaceMultiple(mainString, toBeReplaces, newString): # Iterate over the strings to be replaced for elem in toBeReplaces : # Check if string is in the main string if elem in mainString : # Replace the string mainString = mainString.replace(elem, newString) return mainString
リストtoBeReplaces内の文字列のすべての出現箇所を、メインの指定されたリストmainString内のnewStringに置き換えます。
出現箇所を「AA」に置き換える方法を見てみましょう。
otherStrの内容は次のとおりです。
HeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring
完全な例は次のとおりです。
出力:
String with replaced Content : Hello, ThiX iX a Xample XtringHello, ThiXXXS iXXXS a sample stringHeAAAAo, ThiAA iAA AA AAAAmpAAe AAtring