Pythonでの文字列置換| Python文字列置換[2022]

公開: 2021-01-02

Pythonで文字と文字列を置き換えることは、データクリーニングまたはテキスト処理に関して重要なタスクです。 データには、削除する必要のあるガベージ文字のフォーマットの問題、カテゴリのスペルの問題などがある可能性があります。また、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)
#置換する文字列を反復処理する
strReplaceListelem場合
#文字列がメイン文字列に含まれているかどうかを確認する
mainStrelem場合
#文字列を置き換えます
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((elemcharListない場合 Mystrelemの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だけでなく、他の多くの言語もこれを事前定義されたデータ型としてサポートし、それらを操作するためのさまざまなメソッドをサポートしています。