パターンに一致する文字の削除

Python:
パターンに一致する文字の削除

方法:

import re

# 例文
text = "Hello, World! 1234"

# 数字を全て除去
no_digits = re.sub(r'\d', '', text)
print(no_digits)  # 出力: "Hello, World! "

# 句読点を除去
no_punctuation = re.sub(r'[^\w\s]', '', text)
print(no_punctuation)  # 出力: "Hello World 1234"

# 母音を除去
no_vowels = re.sub(r'[aeiouAEIOU]', '', text)
print(no_vowels)  # 出力: "Hll, Wrld! 1234"

私のカスタム関数

これを頻繁に行うので、delete() 関数にリファクタリングしました。doctestsの良いデモンストレーションにもなります:

def delete(string: str, regex: str) -> str:
    """
    >>> delete("Hello, world!", "l")
    'Heo, word!'

    >>> delete("Hello, world!", "[a-z]")
    'H, !'
    """
    return re.sub(regex, "", string)

深掘り

テキスト内のパターンに一致する文字を削除する習慣は、コンピュータサイエンスの深い歴史に根付いており、sedgrepといった初期のUnixツールに遡ります。Pythonでのreモジュールは、この機能を提供し、正規表現を利用してテキスト処理のための強力で万能なツールを実現します。

reモジュールの代替手段には、以下が含まれます:

  • 単純なケースではreplace()のような文字列メソッド。
  • より複雑なパターンやより良いUnicodeサポートにはregexのようなサードパーティのライブラリ。

内部では、re.sub()を使用すると、Pythonインタプリタはパターンを一連のバイトコードにコンパイルし、入力テキスト上で直接パターンマッチングを行う状態機械によって処理されます。この操作は大きな文字列や複雑なパターンの場合にはリソースを多く消費するため、大規模データ処理においてパフォーマンス考慮が重要になります。

参照