【Python入門】文字列から句読点を削除する3つの方法
はじめに
文字列から句読点(ピリオド、カンマ、疑問符など)をまとめて取り除きたい場面は、テキスト処理やデータクレンジングでよくあります。最も高速な方法は、標準ライブラリの string モジュールと str.translate() を組み合わせることです。この記事では、代表的な3つの方法をコード例とともに解説します。
方法1:str.translate() を使う(高速・推奨)
str.maketrans() で「削除対象の文字」を指定した変換テーブルを作成し、translate() に渡すことで、句読点を一括除去できます。
import string
s = "string. With. Punctuation?"
# 第3引数に指定した文字が削除される変換テーブルを作成
translator = str.maketrans('', '', string.punctuation)
print(s.translate(translator))
実行結果は次のとおりです。
string With Punctuation
string.punctuation には、!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ というASCII句読点がすべて定義されています。translate() は内部でC言語レベルの処理が行われるため、大量のテキストを扱う場合にも高いパフォーマンスを発揮します。
方法2:内包表記でフィルタリングする(読みやすい)
より直感的で読みやすいコードにしたい場合は、ジェネレータ式で文字を1つずつ判定し、句読点以外の文字だけを連結する方法があります。
import string s = "string. With. Punctuation?" exclude = set(string.punctuation) s = ''.join(ch for ch in s if ch not in exclude) print(s)
実行結果:
string With Punctuation
句読点を set にしておくことで、所属判定がO(1)になりパフォーマンスが向上します。ただし、純粋なPythonのループ処理になるため、translate() よりは速度で劣ります。
方法3:正規表現を使う(柔軟)
re モジュールを利用すれば、パターンベースで柔軟に記号を除去できます。
import re s = "string. With. Punctuation?" s = re.sub(r'[^\w\s]', '', s) print(s)
実行結果:
string With Punctuation
パターン [^\w\s] は「英数字・アンダースコア・空白以外の文字」に一致するため、句読点などの記号をまとめて削除できます。削除したい文字を細かく制御したい場合に特に有効です。
まとめ
- 速度重視 →
str.translate()+str.maketrans() - 可読性重視 → 内包表記によるフィルタリング
- 柔軟なパターン制御が必要 →
re.sub()
それぞれの特徴を理解して使い分ければ、効率的かつ保守しやすいテキスト処理が実現できます。日常的な前処理には translate() を、条件が複雑なケースには正規表現を選ぶのがおすすめです。
-
【初心者向け】Pythonでリストから要素を削除する4つの方法|pop()・remove()・del・clear()の使い方
Pythonのリスト(list)は線形データ構造の一つで、要素が連続したメモリ領域に格納され、各要素にはインデックスを使ってアクセスできます。 プログラミングをしていると、リストから特定の要素を削除したい場面によく出会います。Pythonにはそのための組み込み機能がいくつか用意されており、目的に応じて使い分けることが大切です。この記事では、代表的な4つの方法「pop()」「remove()」「del」「clear()」をコード例とともに解説します。 1. pop():インデックスを指定して削除する pop() は、引数として渡したインデックス位置にある要素を削除します。さらに、削除された要素を
-
【Python】Tkinterでラベルのテキストを削除する方法をわかりやすく解説
Tkinterは、PythonでGUIベースのアプリケーションを作成・開発するための標準ライブラリです。この記事では、何らかのテキストが表示されているラベルから、そのテキストを削除する方法を解説します。 ラベルからテキストを削除するには、ラベルの表示を切り替えるトリガーとして機能するボタンを作成します。具体的には、config()メソッドを使ってラベルのtext属性を空の文字列に書き換えます。 サンプルコード # Tkinterライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウィンドウのサイズを