Python で文字列から特殊文字を削除する

Muhammad Waiz Khan 2023年9月5日
  1. Pythonのstr.isalnum() メソッドを使用した文字列から特殊文字を削除
  2. filter() 関数を使用した文字列から特殊文字を削除
  3. 正規表現を使用したPythonの文字列から特殊文字を削除
  4. str.translate() メソッドと str.maketrans() メソッドを使用したPythonの文字列から特殊文字を削除
  5. map() とラムダ関数を使用したPythonの文字列から特殊文字を削除
  6. コード例:
Python で文字列から特殊文字を削除する

このチュートリアルでは、Pythonで文字列からすべての特殊文字を削除するさまざまな方法について説明します。関数または正規表現を使用して文字列から特殊文字を削除することができます。

文字列から特殊文字を削除することは、テキストデータをクリーンにし、さらなる処理に適した状態にするための一般的なタスクです。以下の方法を使用してこの目標を達成する方法を説明します。

  1. str.isalnum() メソッドと str.join() メソッドを使用する方法。
  2. filter() 関数を使用する方法。
  3. 正規表現(re モジュール)を使用する方法。
  4. str.translate() メソッドと str.maketrans() メソッドを使用する方法。
  5. map() とラムダ関数を使用する方法。

Pythonのstr.isalnum() メソッドを使用した文字列から特殊文字を削除

str.isalnum() メソッドは、文字が英数字かどうかを判定する強力なツールです。str.join() メソッドを使用することで、クリーンな文字列を再構築することができます。

この記事では、例として文字列 "Hey! What's up bro?" を使用します。

次に、str.isalnum() メソッドと str.join() メソッドを使用して文字列から特殊文字を削除するコード例を示します。

# 特殊文字を含む例の文字列
original_string = "Hey! What's up bro?"

# ステップ1: リスト内包表記と str.isalnum() メソッドを使用して特殊文字を削除
cleaned_list = [char for char in original_string if char.isalnum()]

# ステップ2: str.join() メソッドを使用してクリーンな文字列を再構築
cleaned_string = "".join(cleaned_list)

# クリーンな文字列を出力
print("元の文字列:", original_string)
print("クリーンな文字列:", cleaned_string)

出力結果:

元の文字列: Hey! What's up bro?
クリーンな文字列: HeyWhatsupbro

ステップごとの説明

  1. 我々は特殊文字を含む例の文字列を定義します。
  2. リスト内包表記を使用して、元の文字列の各文字を反復処理します。文字が英数字であれば、cleaned_list に含まれます。
  3. str.join() メソッドを使用して、cleaned_list の文字を連結して最終的なクリーンな文字列を形成します。
  4. オリジナルの文字列とクリーンな文字列の両方を比較するために、それぞれを出力します。

filter() 関数を使用した文字列から特殊文字を削除

filter() 関数は、特定の基準に基づいて文字列から不要な文字を削除する強力な方法を提供します。

次に、同じ例の文字列を使用し、filter() 関数を使用して特殊文字を削除する方法を示します。

# 特殊文字を含む例の文字列
original_string = "Hey! What's up bro?"

# filter() 関数を文字列に適用
filtered_chars = filter(str.isalnum, original_string)

# フィルタリングされた文字を文字列に変換
cleaned_string = "".join(filtered_chars)

# クリーンな文字列を出力
print("元の文字列:", original_string)
print("クリーンな文字列:", cleaned_string)

出力結果:

元の文字列: Hey! What's up bro?
クリーンな文字列: HeyWhatsupbro

ステップごとの説明

  1. 特殊文字を含む例の文字列を定義します。
  2. filter() 関数に、フィルタ条件として str.isalnum 関数を使用します。この関数は文字が英数字であるかどうかをチェックします。
  3. filter() 関数は、文字列の各文字にフィルタ条件を適用し、フィルタ条件を満たす文字だけを含むイテラブルを返します。
  4. イテラブルのフィルタリングされた文字を文字列に戻すために、join() メソッドを使用します。
  5. オリジナルの文字列とクリーンな文字列を出力します。

正規表現を使用したPythonの文字列から特殊文字を削除

正規表現(正規表現またはregexと略されることがあります)は、文字列を操作するための多目的かつ柔軟な方法を提供します。

例をもう一度使用し、正規表現を使用して特殊文字を削除する方法を示します。

import re

# 特殊文字を含む例の文字列
original_string = "Hey! What's up bro?"

# 非英数字文字用の正規表現パターンを定義
pattern = r"[^a-zA-Z0-9\s]"

# re.sub() を使用して特殊文字を空文字に置換
cleaned_string = re.sub(pattern, "", original_string)

# クリーンな文字列を出力
print("元の文字列:", original_string)
print("クリーンな文字列:", cleaned_string)

出力結果:

元の文字列: Hey! What's up bro?
クリーンな文字列: Hey Whats up bro

ステップごとの説明

  1. 正規表現を使用するために re モジュールをインポートします。
  2. 特殊文字を含む例の文字列を定義します。
  3. 非英数字文字用の正規表現パターン [^a-zA-Z0-9\s] を定義します。これは、文字、数字、空白以外の任意の文字に一致するパターンです。
  4. re.sub() 関数を使用して、一致した特殊文字を空文字に置換して削除します。
  5. オリジナルの文字列とクリーンな文字列を出力します。

str.translate() メソッドと str.maketrans() メソッドを使用したPythonの文字列から特殊文字を削除

Pythonの str.translate() メソッドは、文字列の操作に非常に役立つツールです。特に、特定の文字を文字列から削除したり、文字ごとの置換を行ったりする場合に便利です。

このメソッドは、str.maketrans() メソッドを活用して、置換や削除する文字のマッピングを定義します。

str.translate() メソッドは、この翻訳テーブルを文字列に適用します。

この記事の目的のために、例として文字列 “Hey! What’s up bro?” を使用します。

コード例:

# 特殊文字を含む例の文字列
original_string = "Hey! What's up bro?"

# 特殊文字を削除するための翻訳テーブルを定義
special_characters = "!@#$%^&*()_-+=<>,./?;:'\"[]{}\\|`~"
translation_table = str.maketrans("", "", special_characters)

# translate() メソッドを使用して翻訳テーブルを適用
cleaned_string = original_string.translate(translation_table)

# クリーンな文字列を出力
print("元の文字列:", original_string)
print("クリーンな文字列:", cleaned_string)

出力結果:

元の文字列: Hey! What's up bro?
クリーンな文字列: Hey Whats up bro

ステップごとの説明

  1. 特殊文字を含む例の文字列と、削除する特殊文字の文字列を定義します。特殊文字の文字列をカスタマイズして、入力文字列から削除する必要のある任意の特殊文字を含めることができます。
  2. str.maketrans() メソッドを使用して翻訳テーブルを作成します。このメソッドは3つの引数を受け取ります。置換する文字、それに対応する文字、および削除する文字を指定します。
  3. 置換する文字の対応する文字として空文字 '' を指定し、削除する文字として先に定義した special_characters の文字列を指定します。これにより、各特殊文字が None にマップされ、文字列から削除されることが示されます。
  4. 翻訳テーブルが用意できたら、translate() メソッドをオリジナルの文字列に適用します。このメソッドは翻訳テーブルを適用し、指定した文字の置換や削除が行われた新しい文字列を返します。

map() とラムダ関数を使用したPythonの文字列から特殊文字を削除

map() 関数は、与えられた関数をイテラブル(リスト、タプル、または文字列など)の各アイテムに適用し、イテレータを返す組み込みのPython関数です。ラムダ関数と組み合わせることで、コレクションに対して要素ごとの操作を簡潔かつ効率的に実行する方法が提供されます。

コード例:

# 特殊文字を含む例の文字列
original_string = "Hey! What's up bro?"

# 特殊文字を削除するためのラムダ関数を定義
cleaned_string = "".join(
    map(lambda char: char if char.isalnum() or char.isspace() else "", original_string)
)

# クリーンな文字列を出力
print("元の文字列:", original_string)
print("クリーンな文字列:", cleaned_string)

出力結果:

元の文字列: Hey! What's up bro?
クリーンな文字列: Hey Whats up bro

ステップごとの説明

  1. 特殊文字を含む例の文字列を定義します。
  2. 文字が英数字またはスペースである場合はそのまま、そうでない場合は空文字にするラムダ関数を定義します。このラムダ関数は文字ごとのフィルタリングを行い、スペースを除くすべての非英数字文字を削除します。
  3. map() 関数を使用して、オリジナルの文字列の各文字にラムダ関数を適用します。map() 関数は修正された文字のイテレータを返します。最終的なクリーンな文字列を得るために、イテレータから得た文字を join() メソッドを使用して1つの文字列に連結します。

関連記事 - Python String