Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列から特殊文字・句読点・空白をすべて削除する方法

Pythonで文字列に含まれる特殊文字、句読点、空白などをまとめて削除したい場合、いくつかの簡単な方法があります。ここでは代表的な2つのアプローチを紹介します。

方法1:内包表記とisalnum()を使う

文字列を1文字ずつ反復処理し、isalnum()メソッドで英数字のみを抽出する方法です。isalnum()は、その文字がアルファベットまたは数字であればTrueを返すため、それ以外の記号や空白は自動的に除外されます。

>>> string = "Hello $#! People   Whitespace 7331"
>>> ''.join(e for e in string if e.isalnum())
'HelloPeopleWhitespace7331'

このコードでは、ジェネレータ式で条件を満たす文字だけを取り出し、''.join()で連結して新しい文字列を生成しています。シンプルで可読性が高く、追加のモジュールも不要なので、手軽に使えるのがメリットです。

方法2:正規表現(re.sub)を使う

reモジュールのre.sub(パターン, 置換後の文字列, 対象文字列)を使えば、正規表現にマッチした部分をすべて置き換えられます。英数字以外の文字([^A-Za-z0-9])を空文字列に置き換えることで、不要な文字を一括削除できます。

>>> import re
>>> re.sub('[^A-Za-z0-9]+', '', "Hello $#! People   Whitespace 7331")
'HelloPeopleWhitespace7331'

パターン末尾の+は「1回以上の連続」を意味するため、連続した記号や空白をまとめて処理でき、効率的です。

注意点:日本語などのマルチバイト文字の扱い

[^A-Za-z0-9]というパターンは半角英数字以外をすべて削除するため、日本語のひらがな・カタカナ・漢字も消えてしまいます。日本語を残したい場合は、isalnum()を使う方法(Unicode対応のため全角文字も保持される)か、正規表現で[^\w][^\w ]のようにパターンを調整してください。

どちらを選ぶべき?

  • 手軽さ重視ならisalnum()+内包表記。標準機能だけで完結し、Unicodeにも自然に対応します。
  • 柔軟性重視ならre.sub()。残したい文字種を細かく指定できるため、複雑な条件にも対応できます。

用途に応じて使い分けることで、文字列のクリーニング処理を効率よく実装できます。

  1. 【Python入門】文字列の末尾の空白をすべて削除する方法

    Pythonで文字列末尾の空白を削除する基本:rstrip()メソッド Pythonで文字列の末尾にある空白(半角スペース、タブ、改行など)をすべて削除したい場合は、rstrip()メソッドを使用します。このメソッドは、元の文字列を直接変更するのではなく、指定した文字が末尾からすべて取り除かれた新しい文字列のコピーを返します。 引数を省略して呼び出した場合、デフォルトで空白文字が削除対象になります。 >>> Hello .rstrip() Hello >>> Ninja Turtles the movie .rstrip

  2. Pythonで文字列の先頭の空白(スペース・タブ・改行)をすべて削除する方法

    lstrip()メソッドで先頭の空白を削除するPythonで文字列の先頭にある空白文字(半角スペース、タブ、改行など)をすべて削除したい場合は、lstrip()メソッドを使用します。引数を指定しないで呼び出すと、文字列の先頭に連続するすべての空白文字が取り除かれます。>>> hello world!.lstrip() hello world!このように、インデントや改行コードなどで汚れた文字列の先頭を簡単にきれいにすることができます。strip()メソッドで両端の空白を同時に削除する文字列の先頭と末尾(両端)の空白を一度に削除したい場合は、strip()メソッドが便