Pythonで文字列を置換する方法

完全一致ではなく正規表現に一致する文字列を置き換える場合は、reモジュールのsub()メソッドを使用します

Python正規表現置換

regex(正規表現)を使用してPythonで文字列を置き換えるには、regex sub()メソッドを使用します。re.sub()メソッドは、最大5つの引数を受け入れ、置き換えられた文字列を返します。

あなたが使用している場合はstr.replace()文字列を置換する方法を、新しい文字列が完全に古い文字列に一致するように置き換えられます。

Python正規表現sub()

reモジュールのPythonre.sub()関数を使用して、部分文字列を置き換えることができます。

 

sub()メソッドを使用するには、最初にreモジュールをインポートする必要があり、次にそのsub()メソッドを使用できます。

re.sub()メソッドの構文を参照してください。

 

構文

re.sub(pattern, repl, string, count=0, flags=0)

次のコードを参照してください。

import re

str = 'aaa@gmail.com'

print(re.sub('[a-z]*@', 'ApD@', str))

上記の例では、@文字の前のaからzまでの小文字だけを置き換えようとしています。

出力を参照してください。

ApD@gmail.com

出力から、電子メールアドレスが正常に更新されたことがわかります。

カウントを指定します

Python regex sub()メソッドでは、countというパラメーターを渡すことができます。 

countの値を超えて置き換えないようにコンパイラーに提案します。

import re

str = 'aaa@gmail.com'

print(re.sub('[a-z]*@', 'ApD@', str, 2))

出力

ApD@gmail.com ApD@hotmail.com ccc@apple.com

出力から、2つの電子メールアドレスのみが置き換えられ、最後のアドレスはそのままであることがわかります。

複数の部分文字列を同じ文字列に置き換えます

文字列を[]で囲んで、その中の任意の1文字に一致させることができます。複数の異なる文字を同じ文字列に置き換えるために使用できます。

import re

str = 'aaa@gmail.com bbb@hotmail.com ccc@apple.com'

print(re.sub('[a-z]*@', 'info@', str))

出力

info@gmail.com info@hotmail.com info@apple.com

同じ文字列が複数の部分文字列に置き換えられていることがわかります。

場合| パターンを区切り、任意のパターンに一致します。また、パターンごとに正規表現の特殊文字を使用することも可能ですが、通常の文字列をそのまま指定してもOKです。

複数の異なる文字列を同じ文字列に置き換えるために使用できます。

import re

str = 'aaa@gmail.com bbb@hotmail.com ccc@apple.com'

print(re.sub('gmail|hotmail|apple', 'appdividend', str))

上記のコードには、3つのサブ文字列で構成される文字列があります。

現在、3つの部分文字列のいずれかをappdividendに置き換えています。すべてが見つかった場合は、すべてが置き換えられます。2つの一致が見つかった場合、2つの部分文字列が置き換えられます。一致するものが1つ見つかると、1つの部分文字列が置き換えられます。

出力

aaa@appdividend.com bbb@appdividend.com ccc@appdividend.com

すべての部分文字列がappdividendに置き換えられていることがわかります。

1つのパターンのみが一致するシナリオを見てみましょう。

import re

str = 'aaa@gmail.com bbb@amazon.com ccc@walmart.com'

print(re.sub('gmail|hotmail|apple', 'appdividend', str))

出力

aaa@appdividend.com bbb@amazon.com ccc@walmart.com

bbb@amazon.comとccc@walmart.comは変更されていないことがわかります。

aaa@gmail.comのみがaaa@appdividend.comに置き換えられます。

一致した部品を使用して交換してください

一致した部分を使用して部分文字列を置き換えるには、新しい文字列の()で囲まれた部分に一致する文字列を使用できます。次のコードを参照してください。

import re

str = 'aaa@gmail.com bbb@amazon.com ccc@walmart.com'

print(re.sub('([a-z]*)@', '\1 19-@', str))

出力

19-@gmail.com  19-@amazon.com  19-@walmart.com

\ 1は、()に一致する部分に対応します。複数の()がある場合は、\ 2、\ 3…のように使用します。

”または”“で囲まれた通常の文字列の場合は\\ 1のように\をエスケープすることが重要ですが、r”のように先頭にrが付いた生の文字列の場合は\ 1と書くことができます。

スライスを使用して文字列を位置に置き換えます

位置を指定して置き換える方法はありません。スライスで割って任意の文字列と連結することで、指定した位置を入れ替えた新しい文字列を作成できます。

import re

str = 'albertodelrio'

print(str[:4] + 'HANAYA' + str[7:])

出力

albeHANAYAdelrio

上記のコード例では、文字列インデックス4から7の間に部分文字列を追加したことがわかります。

結論

このチュートリアルでは、正規表現を使用してPythonで文字列を置き換える方法を見てきました。最初にreモジュールをインポートし、次にre.sub()メソッドを使用して、1つの文字列、複数の文字列、一致した文字列を置き換え、スライスを使用して文字列をその位置に置き換えました。

最後に、Python正規表現置換チュートリアルは終了しました。

リンク: https://appdividend.com/2020/06/10/python-regex-replace-how-to-replace-string-in-python/

#python 

What is GEEK

Buddha Community

Pythonで文字列を置換する方法

Pythonで文字列を置換する方法

完全一致ではなく正規表現に一致する文字列を置き換える場合は、reモジュールのsub()メソッドを使用します

Python正規表現置換

regex(正規表現)を使用してPythonで文字列を置き換えるには、regex sub()メソッドを使用します。re.sub()メソッドは、最大5つの引数を受け入れ、置き換えられた文字列を返します。

あなたが使用している場合はstr.replace()文字列を置換する方法を、新しい文字列が完全に古い文字列に一致するように置き換えられます。

Python正規表現sub()

reモジュールのPythonre.sub()関数を使用して、部分文字列を置き換えることができます。

 

sub()メソッドを使用するには、最初にreモジュールをインポートする必要があり、次にそのsub()メソッドを使用できます。

re.sub()メソッドの構文を参照してください。

 

構文

re.sub(pattern, repl, string, count=0, flags=0)

次のコードを参照してください。

import re

str = 'aaa@gmail.com'

print(re.sub('[a-z]*@', 'ApD@', str))

上記の例では、@文字の前のaからzまでの小文字だけを置き換えようとしています。

出力を参照してください。

ApD@gmail.com

出力から、電子メールアドレスが正常に更新されたことがわかります。

カウントを指定します

Python regex sub()メソッドでは、countというパラメーターを渡すことができます。 

countの値を超えて置き換えないようにコンパイラーに提案します。

import re

str = 'aaa@gmail.com'

print(re.sub('[a-z]*@', 'ApD@', str, 2))

出力

ApD@gmail.com ApD@hotmail.com ccc@apple.com

出力から、2つの電子メールアドレスのみが置き換えられ、最後のアドレスはそのままであることがわかります。

複数の部分文字列を同じ文字列に置き換えます

文字列を[]で囲んで、その中の任意の1文字に一致させることができます。複数の異なる文字を同じ文字列に置き換えるために使用できます。

import re

str = 'aaa@gmail.com bbb@hotmail.com ccc@apple.com'

print(re.sub('[a-z]*@', 'info@', str))

出力

info@gmail.com info@hotmail.com info@apple.com

同じ文字列が複数の部分文字列に置き換えられていることがわかります。

場合| パターンを区切り、任意のパターンに一致します。また、パターンごとに正規表現の特殊文字を使用することも可能ですが、通常の文字列をそのまま指定してもOKです。

複数の異なる文字列を同じ文字列に置き換えるために使用できます。

import re

str = 'aaa@gmail.com bbb@hotmail.com ccc@apple.com'

print(re.sub('gmail|hotmail|apple', 'appdividend', str))

上記のコードには、3つのサブ文字列で構成される文字列があります。

現在、3つの部分文字列のいずれかをappdividendに置き換えています。すべてが見つかった場合は、すべてが置き換えられます。2つの一致が見つかった場合、2つの部分文字列が置き換えられます。一致するものが1つ見つかると、1つの部分文字列が置き換えられます。

出力

aaa@appdividend.com bbb@appdividend.com ccc@appdividend.com

すべての部分文字列がappdividendに置き換えられていることがわかります。

1つのパターンのみが一致するシナリオを見てみましょう。

import re

str = 'aaa@gmail.com bbb@amazon.com ccc@walmart.com'

print(re.sub('gmail|hotmail|apple', 'appdividend', str))

出力

aaa@appdividend.com bbb@amazon.com ccc@walmart.com

bbb@amazon.comとccc@walmart.comは変更されていないことがわかります。

aaa@gmail.comのみがaaa@appdividend.comに置き換えられます。

一致した部品を使用して交換してください

一致した部分を使用して部分文字列を置き換えるには、新しい文字列の()で囲まれた部分に一致する文字列を使用できます。次のコードを参照してください。

import re

str = 'aaa@gmail.com bbb@amazon.com ccc@walmart.com'

print(re.sub('([a-z]*)@', '\1 19-@', str))

出力

19-@gmail.com  19-@amazon.com  19-@walmart.com

\ 1は、()に一致する部分に対応します。複数の()がある場合は、\ 2、\ 3…のように使用します。

”または”“で囲まれた通常の文字列の場合は\\ 1のように\をエスケープすることが重要ですが、r”のように先頭にrが付いた生の文字列の場合は\ 1と書くことができます。

スライスを使用して文字列を位置に置き換えます

位置を指定して置き換える方法はありません。スライスで割って任意の文字列と連結することで、指定した位置を入れ替えた新しい文字列を作成できます。

import re

str = 'albertodelrio'

print(str[:4] + 'HANAYA' + str[7:])

出力

albeHANAYAdelrio

上記のコード例では、文字列インデックス4から7の間に部分文字列を追加したことがわかります。

結論

このチュートリアルでは、正規表現を使用してPythonで文字列を置き換える方法を見てきました。最初にreモジュールをインポートし、次にre.sub()メソッドを使用して、1つの文字列、複数の文字列、一致した文字列を置き換え、スライスを使用して文字列をその位置に置き換えました。

最後に、Python正規表現置換チュートリアルは終了しました。

リンク: https://appdividend.com/2020/06/10/python-regex-replace-how-to-replace-string-in-python/

#python