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

Pythonで文字列から数字を削除する3つの方法をわかりやすく解説

Pythonで文字列に含まれる数字だけを取り除きたい場面はよくあります。例えば、ユーザー入力のクレンジングやデータの前処理などがその代表例です。この記事では、文字列から数字を削除する代表的な方法を、コード例とともにわかりやすく紹介します。

方法1: ループとisdigit()メソッドを使う

最も基本的なアプローチは、文字列を1文字ずつ確認し、数字以外の文字だけを新しいリストに集める方法です。最後にjoin()メソッドを使って、それらの文字を1つの文字列に結合します。

コード例

my_str = 'qwerty123asdf32'
non_digits = []
for c in my_str:
    if not c.isdigit():
        non_digits.append(c)
result = ''.join(non_digits)
print(result)

実行結果

qwertyasdf

isdigit()は、その文字が数字かどうかを判定するメソッドです。数字でない場合のみリストに追加することで、元の文字列から数字が除外されます。

方法2: リスト内包表記で1行にまとめる

上記の処理は、Pythonのリスト内包表記を使えばたった1行で書けます。より簡潔でPythonらしい(Pythonicな)書き方です。

コード例

my_str = 'qwerty123asdf32'
result = ''.join([c for c in my_str if not c.isdigit()])
print(result)

実行結果

qwertyasdf

リスト内包表記を使うことで、ループ処理のコードがすっきりし、可読性も向上します。簡単なフィルタリング処理であれば、この書き方がおすすめです。

方法3: 正規表現(reモジュール)を使う

より高度なテキスト処理を行いたい場合は、標準ライブラリのreモジュールを使う方法もあります。re.sub()関数で数字にマッチするパターンを空文字列に置き換えるだけで、数字を一括削除できます。

コード例

import re

my_str = 'qwerty123asdf32'
result = re.sub(r'\d+', '', my_str)
print(result)

実行結果

qwertyasdf

\d+は「1桁以上の連続した数字」にマッチする正規表現パターンです。大量のテキストや複雑なパターンを扱う場合には、この方法が特に有効です。

まとめ

  • ループ + isdigit(): 処理の流れが明確で、初心者にも理解しやすい方法。
  • リスト内包表記: 簡潔に書けるPythonらしい定番の手法。
  • 正規表現(re.sub): 柔軟性が高く、複雑な条件での除去にも対応可能。

用途やコードの規模に応じて、これらの方法を使い分けてみてください。

  1. Pythonで文字列を逆順にする方法|スライスとreversed()の使い方を解説

    Pythonでは、文字列スライスやrange演算子を活用することで、文字列を簡単に逆順(反転)にすることができます。この記事では、代表的な2つの方法をわかりやすく解説します。 方法1:スライス記法 [::-1] を使う(推奨・高速) 最もシンプルで一般的なのが、スライス記法を使う方法です。ステップに -1 を指定するだけで、文字列を後ろから前へ一文字ずつ取り出せます。 >>> Hello[::-1] olleH >>> Halloween[::-1] neewollaH スライスの仕組み 角括弧 [] の中には、コロン「:」で区切った3つの値を指定できます

  2. Pythonで文字列が英数字のみで構成されているか判定する方法【isalnum()と正規表現】

    Pythonでは、文字列がアルファベットや数字だけで構成されているかどうかを簡単にチェックできます。主な方法は2つあります。1つは文字列クラスに組み込まれている isalnum() メソッドを使う方法、もう1つは正規表現(regex)を使う方法です。 1. isalnum() メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、その文字列が英数字(アルファベットと数字)のみで構成されている場合に True を、それ以外の場合に False を返します。 使用例:英数字のみの文字列 print(12