Python中sub()の使い方説明

3044 ワード

Pythonはテキストの文字列を検索して置換しますか?
sub()方法を使用して照会および置換ができ、sub方法のフォーマットは以下の通りである。

sub(replacement, string[, count=0])
replaccementは置換されたテキストです。
stringは差し替えが必要なテキストです。
countはオプションのパラメータです。最大置換された数を指します。
例:

import re
p = re.compile('(blue|white|red)')
print(p.sub('colour','blue socks and red shoes'))
print(p.sub('colour','blue socks and red shoes', count=1))
出力:

colour socks and colour shoes
colour socks and red shoes
subn()方法で実行される効果はsub()と同じですが、置き換えられた新しい文字列と置換された数を含む二次元配列が返されます。
たとえば:

import re
p = re.compile('(blue|white|red)')
print(p.subn('colour','blue socks and red shoes'))
print(p.subn('colour','blue socks and red shoes', count=1))
出力

('colour socks and colour shoes', 2)
('colour socks and red shoes', 1)
補足:Pythonにおける正則表現sub関数の使い方のまとめ
正規表現の比較的一般的な用途は、すべてのパターンにマッチする文字列を見つけ、異なる文字列で置換することです。sub法は文字列または関数、および処理する文字列の代替値を提供する。
1、ここのsub方法は、‘RegexObject’の実例にコンパイルされた方法です。

Sub(replacement,string[,count =0 ])
1)返した文字列は、文字列の中でREの一番左に重複しないマッチで置換されます。パターンが発見されていない場合、文字は変更されていません。
2)オプションパラメータcountはモードマッチング後の最大回数です。countは非負の整数でなければなりません。デフォルト値は0です。すべてのマッチを置換します。
例:

2、モジュール級関数:sub方法

注:これらの関数(sub関数を含む)は、最初のパラメータとしてRE文字列を使用していますが、後のパラメータは、対応する「RegexObject」方法のパラメータと同じで、戻りはNoneか、それとも「Match Object」の例です。
(実際にsubが返したのは文字列で、両者の言い方は一致せず、実際に準ずる)
Re.subの役割は、与えられた代替コンテンツを使用して、マッチングモードのサブ文字列(左端で重複していないサブ文字列)を置換することである。

3、代替のグループ番号として
2の例では、一つの文字列を他の内容で置き換えるだけです。replaceという文字列の方法で同じ効果を簡単に達成できます。正規表現はより柔軟な検索を可能にし、より強力な機能の置換も可能にします。
Re.subの強力な機能を検証する最も簡単な方法は、置換文字列にグループ番号を使用することです。置換内容では「\'型で出現する任意の変換シーケンスは、モードでグループnにマッチする文字列に置き換えられます。
例えば、‘*something*’を‘em’someting'に置き換えると、前者は普通の文書ドキュメント(例えばEmail)で強調される常用方法であり、後者は該当するHTMLコード(ウェブページ用)であると仮定する。

ここではすべての**の文字列を置換します。最初はworldを置換するだけだと思いました。一筆記す。
4、代替の関数として
Re.sub関数は、1つの関数を第2のパラメータ(置換式)として使用することができる。関数は一致するオブジェクトによって呼び出され、その戻り値はテキストに挿入されます。しかし、例2から見れば、関数の唯一のパラメータは一致するオブジェクトである。
例1:
test.txt内容:

結果:

例2
(この例は「python基礎教程」20章)
Subメソッドは直接にcalbackを呼び出すのではなく、新しい関数を返します。この関数はre.subの代替関数として使用されます。

以上は個人の経験ですので、参考にしていただければと思います。間違いがあったり、完全に考えていないところがあれば、教えてください。