Pythonでの文字列置換| Python文字列置換[2022]
公開: 2021-01-02Pythonで文字と文字列を置き換えることは、データクリーニングまたはテキスト処理に関して重要なタスクです。 データには、削除する必要のあるガベージ文字のフォーマットの問題、カテゴリのスペルの問題などがある可能性があります。また、NLPベースの問題のテキスト前処理では、文字列の置換がテキストデータを準備する際の最も基本的で重要なステップです。
このチュートリアルでは、さまざまな種類の文字列を置き換えるための複数の方法について説明します。 データサイエンスに興味がある場合は、データサイエンス認定を確認してください。 このチュートリアルを終了するまでに、次の知識が身に付きます。
- Python replace()メソッド
- 正規表現sub()メソッド
- join()およびfilter()
- 文字列内の数値データを置き換える
目次
Python replace()
replace(old_str、new_str、count)メソッドは、次の3つの引数で構成されます。
- old_str:置換する必要のある文字列または文字列の一部
- new_str:古い文字列を置き換える必要のある文字列
- count:特定の文字列を置き換える必要がある回数
動作を理解するために、いくつかの例を見ていきましょう。
シングルリプレース
Mystr= "これはサンプル文字列です" Newstr = Mystr.replace( 'is' 、 'was' ) |
#出力: Thwasはサンプル文字列でした |
思い出してください。Pythonの文字列は不変です。 したがって、replaceメソッドを呼び出すと、基本的に、変更されたデータを使用して別の文字列オブジェクトが作成されます。 さらに、上記の例ではcountパラメーターを指定していません。 指定しない場合、replaceメソッドは文字列のすべての出現箇所を置き換えます。
複数の置換
Mystr= "これはサンプル文字列です" Newstr = Mystr.replace( “ s” 、 “ X” ) |
#出力: ThiX iX a Xample Xtring |
最初のn回の出現を複数置換
最初のN回だけが必要な場合は、
Mystr= "これはサンプル文字列です" Newstr = Mystr.replace( “ s” 、 “ X” 、 3 ) |
#出力: ThiX iXaXample文字列 |
複数の文字列が置き換えられます
上記の例では、1つの文字列を異なる回数置き換えました。 同じ大きな文字列内の異なる文字列を置き換えたい場合はどうでしょうか。 そのための効果的な関数を記述し、同じ方法を使用してそれを実行できます。
上記の例を考えてみましょう。ここで、「h」、「is」、「ng」を「X」に置き換えます。
def MultipleStrings (mainStr、strReplaceList、newStr) : #置換する文字列を反復処理する strReplaceListのelemの場合: #文字列がメイン文字列に含まれているかどうかを確認する mainStrのelemの場合: #文字列を置き換えます mainStr = mainStr.replace(elem、newStr) mainStrを返す |
Mystr= "これはサンプル文字列です" Newstr = MultipleStrings(Mystr、[ 'h' 、 'is' 、 'ng' ]、 “ X” ) |
#出力: TXXXサンプルstriX |
読む: Pythonチュートリアル
正規表現での置き換え
Pythonの正規表現は、サブ文字列の検索、文字列の置換など、テキストデータを処理するためのモジュールです。 正規表現には、部分文字列を簡単に検索して置換/置換するためのsub()関数があります。 その構文といくつかのユースケースを見ていきましょう。
regex.sub (pattern、replacement、original_string)関数は、次の3つの引数を取ります。
- パターン:一致させて置き換える必要のある部分文字列。
- 置換:配置する必要のある文字列、または配置する必要のある値を返す呼び出し可能な関数にすることができます。
- original_string:サブストリングを置き換える必要のあるメインストリング。
replaceメソッドと同じように、正規表現は変更された文字列を使用して別の文字列オブジェクトも作成します。 いくつかの実用的な例を見てみましょう。
空白を削除する
空白は特殊文字として扱い、他の文字に置き換えることができます。 以下の例では、空白を「X」に置き換える予定です。
再インポート Mystr= "これはサンプル文字列です" #Mystrのすべての空白を「X」に置き換えます Newstr = re.sub( r” \ s +” 、 'X' 、Mystr) |
#出力: ThisXisXaXsampleXstring |
ご覧のとおり、すべての空白が置き換えられました。 パターンはr” \ s +”で与えられます。これは、すべての空白文字を意味します。
すべての特殊文字を削除する
すべての特殊文字を削除するために、すべての特殊文字と一致するパターンを渡します。
再インポート インポート文字列 Mystr = “ Tempo @@&[(000)] %% $ @@ 66isit $$#$%-+ Str” パターン= r'[' + string.punctuation + ']' #文字列内のすべての特殊文字をXに置き換えます Newstr = re.sub(pattern、 'X' 、Mystr) |

#出力: TempoXXXXX000XXXXXXX66isitXXXXXXXStr |
大文字と小文字を区別しないとしてサブストリングを削除する
実際のデータでは、大文字と小文字が異なる同じ単語のバージョンが多数存在する場合があります。 それらをすべて削除するには、パターンが効果的ではないため、すべての単語を別々に配置します。 regex sub()関数は、フラグre.IGNORECASEを取り、ケースを無視します。 それがどのように機能するか見てみましょう。
再インポート Mystr= "これはサンプルのIstringです" #文字列内の部分文字列を大文字と小文字を区別しないアプローチに置き換えます Newstr = re.sub( r'is' 、 '**' 、Mystr、flags = re.IGNORECASE) |
#出力: Th****サンプル**tring |
正規表現を使用して複数の文字を削除する
正規表現関数を使用すると、文字列から複数の文字を簡単に削除できます。 以下に例を示します。
再インポート Mystr= "これはサンプル文字列です" パターン= r'[hsa]' #文字列から文字「h」、「s」、および「a」を削除します Newstr = re.sub(pattern、 ” 、Mystr) |
#出力: Ti i mple tring |
join()を使用した置換
文字を削除または置換する別の方法は、文字列を反復処理して、何らかの条件に対してそれらをチェックすることです。
charList = [ 'h' 、 's' 、 'a' ] Mystr= "これはサンプル文字列です" #文字列からリスト内のすべての文字を削除します Newstr = ” .join((elemがcharListにない場合、 Mystrのelemのelem )) |
#出力: Ti i mple tring |
join()とfilter()を使用した置換
上記の例は、フィルター機能を使用して実行することもできます。
Mystr= "これはサンプル文字列です" charList = [ 'h' 、 's' 、 'a' ] #文字列からリスト内のすべての文字を削除します Newstr = “” .join(filter( lambda k:k not in charList、Mystr)) |
#出力: 試してみてください |
必読:実世界での魅力的なPythonアプリケーション
数字の置き換え
多くの場合、数値データは文字列にも存在し、別の機能として個別に削除して処理する必要がある場合があります。 これらを実装する方法を確認するために、いくつかの例を見ていきましょう。
正規表現を使用する
数値データを削除する必要がある以下の文字列について考えてみます。
Mystr = “20xx年のサンプルstring9211” パターン= r'[0-9]' #文字列内のすべての数字を照合し、空の文字列に置き換えます Newstr = re.sub(pattern、 “” 、Mystr) |
#出力: xx年のサンプル文字列 |
上記のコードでは、一致パターンr'[0-9]'を使用してすべての数字を一致させています。
join()関数の使用
文字列を反復処理し、アルファベットに対してFalseを返すisdigit()メソッドを使用して数字を除外することもできます。
Mystr = “20xx年のサンプルstring9211” #文字列内の文字を繰り返し処理し、数字を除くすべての文字を結合します Newstr = “” .join(( item.isdigit())でない場合はMystrのアイテムのアイテム) |
#出力: xx年のサンプル文字列 |
join()とfilter()の使用
同様に、フィルター関数にフィルター条件を設定して、 Trueを返す文字のみを返すこともできます。
Mystr = “20xx年のサンプルstring9211” #文字列内の文字からすべての数字をフィルタリングし、残りの文字を結合します Newstr = “” .join(filter( lambda item: not item.isdigit()、Mystr)) |
#出力: xx年のサンプル文字列 |
行く前に
文字列から文字/空白/数字を削除または置換するさまざまな方法を示す多くの例を取り上げました。 上記の例と独自の例をさらに実行するために、より多くの例とさまざまな方法を試すことを強くお勧めします。
python、データサイエンスについて知りたい場合は、IIIT-BとupGradのデータサイエンスのエグゼクティブPGプログラムをご覧ください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップを提供します。 、業界のメンターと1対1で、400時間以上の学習とトップ企業との仕事の支援。
Pythonの文字列置換メソッドの必要性は何ですか?
この関数は、データクレンジング手法を適用するときに非常に役立ちます。 この機能を使用すると、不要な文字やゴミの文字を簡単に削除できます。 文字列または文字の置換は、データクレンジングだけでなく、NLPの問題の処理にも使用されます。
データサイエンス分野全体が膨大な量のデータを処理するため、文字列を処理するためのこれらのタイプのメソッドを持つことは重要です。
文字列データ型を使用する利点は何ですか?
文字列は、このデータ型を使用して大量のデータを簡単に保存できるので便利です。 Pythonは、文字列に対して操作を実行するための多数の便利なメソッドをサポートしています。 また、文字列はPythonで変更可能であるため、エラーの生成が減り、コストも低くなります。
文字列は、Pythonで最もよく使用される組み込みデータ型の1つです。 Pythonだけでなく、他の多くの言語もこれを事前定義されたデータ型としてサポートし、それらを操作するためのさまざまなメソッドをサポートしています。