Pythonで文字列から数字以外の文字を削除する方法を解説
Pythonでは、文字列から数字以外の文字(アルファベットや記号など)を取り除く方法がいくつかあります。ここでは、代表的な3つの手法を具体的なコード例とともに紹介します。
1. 内包表記とisdigit()メソッドを使う方法
最もシンプルでPythonらしい書き方は、for ... ifによる内包表記を使って数字以外の文字を除外する方法です。isdigit()メソッドは、文字が数字かどうかを判定してくれます。
>>> s = "H3ll0 P30P13" >>> ''.join(i for i in s if i.isdigit()) '303013'
このコードでは、文字列sから1文字ずつ取り出し、isdigit()がTrueを返す数字だけを残して連結しています。
2. filter()関数とlambda式を使う方法
filter()関数とラムダ式を組み合わせることでも、同じ処理を実現できます。
>>> s = "H3ll0 P30P13" >>> ''.join(filter(lambda x: x.isdigit(), s)) '303013'
なお、Python 3ではfilter()はイテレータを返すため、結果を文字列として取得するには上記のように''.join()で囲む必要があります。
3. 正規表現(reモジュール)を使う方法
単純なタスクにはやや大げさに感じられるかもしれませんが、正規表現を使っても同じことができます。\Dは「数字以外の文字」を表すパターンなので、これを空文字列に置換すれば数字だけが残ります。
>>> import re >>> s = "H3ll0 P30P13" >>> re.sub(r"\D", "", s) '303013'
正規表現は、より複雑な条件での文字除去が必要になった場合に特に威力を発揮します。
まとめ
どの方法でも結果は同じ「303013」となります。
- 内包表記+isdigit():可読性が高く、最も一般的な書き方
- filter()+lambda:関数型スタイルが好みの場合に便利
- re.sub():柔軟性が高く、複雑なパターン処理に対応可能
用途や好みに応じて、これらの方法を使い分けるとよいでしょう。
-
【Python】Tkinterでラベルのテキストを削除する方法をわかりやすく解説
Tkinterは、PythonでGUIベースのアプリケーションを作成・開発するための標準ライブラリです。この記事では、何らかのテキストが表示されているラベルから、そのテキストを削除する方法を解説します。 ラベルからテキストを削除するには、ラベルの表示を切り替えるトリガーとして機能するボタンを作成します。具体的には、config()メソッドを使ってラベルのtext属性を空の文字列に書き換えます。 サンプルコード # Tkinterライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウィンドウのサイズを
-
Pythonで文字列から印刷できない文字(制御文字)を削除する方法
Pythonで文字列を扱っていると、目に見えない制御文字(印刷できない文字)が混入し、表示やデータ処理に支障をきたすことがあります。この記事では、ASCII文字のみの場合とUnicodeに対応させたい場合の2つのアプローチで、印刷できない文字を削除する方法を解説します。 方法1:string.printableでASCII文字のみをフィルタリングする 対象の文字列がASCII文字だけで構成されている場合、最も簡単なのはstringモジュールのprintable定数を使う方法です。printableには、印刷可能なすべてのASCII文字が格納されているため、これに含まれない文字を除外すれば制御文