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

Pythonで文字列からすべての句読点を取り除く方法を解説

Pythonで文字列から句読点(ピリオド、カンマ、疑問符など)をすべて取り除きたい場面は、テキスト処理やデータクレンジングにおいてよくあります。この記事では、代表的な3つの方法をわかりやすく紹介します。

方法1:str.translate() を使う(最速)

最も高速な方法は、str.translate() を使うことです。string.punctuation に含まれるすべての句読点を削除できます。

import string

s = "string. With. Punctuation?"
s = s.translate(str.maketrans('', '', string.punctuation))
print(s)

実行結果は以下のとおりです。

string With Punctuation

Python 3では str.maketrans() を使って変換テーブルを作成する点に注意してください。第3引数に指定した文字がすべて削除されます。大量のテキストを処理する場合、この方法が最も効率的です。

方法2:内包表記でフィルタリングする(可読性が高い)

より読みやすいコードを求める場合は、集合(set)を使ってループ処理で句読点を除外する方法があります。

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(string.punctuation) を事前に作成しておくことで、各文字が句読点かどうかの判定が高速になります。処理の流れが直感的で理解しやすいのがメリットです。

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

正規表現を使えば、1行で簡潔に書くこともできます。

import re

s = "string. With. Punctuation?"
s = re.sub(r'[^\w\s]', '', s)
print(s)

実行結果:

string With Punctuation

このパターンは「英数字・アンダースコア・空白以外」の文字をすべて削除します。ただし、Unicode対応が必要な場合などは挙動に注意してください。

まとめ

  • 速度重視ならstr.translate() が最適です。
  • 可読性重視なら:内包表記によるフィルタリングがおすすめです。
  • 柔軟なパターン指定が必要ならre.sub() を活用しましょう。

用途に応じて最適な方法を選び、効率的にテキスト処理を行いましょう。

  1. Pythonで文字列から最小のアルファベット文字を取得する方法

    Pythonでは、組み込み関数 min() を使うことで、文字列に含まれる最小のアルファベット文字を簡単に取得できます。文字列をそのまま引数として渡すだけで、文字コード(Unicode)の順序にもとづいて最も小さい文字が返されます。基本的な使い方>>> min(helloworld) d >>> min(TAJMAHAL) A最初の例では、helloworld の中で最も文字コードが小さい d が返されています。2つ目の例では、大文字のみの文字列 TAJMAHAL から A が取得されています。仕組みと注意点min() は各文字をUnicodeのコードポイン

  2. Pythonで文字列から最大のアルファベット文字を取得する方法

    Pythonでは、組み込み関数 max() を文字列に適用するだけで、文字列の中から最大のアルファベット文字を簡単に取得できます。文字列に max() を使用すると、各文字がUnicodeコードポイントの順序に従って比較され、その中で最も大きな文字が返されます。具体的には、以下のように記述します。 max(stripedzebra) z最初の例では、helloworld に含まれる各文字(h、e、l、o、w、r、d)の中で w が最も大きい文字であるため、結果として w が返されます。同様に、2番目の例では stripedzebra に含まれる文字の中で z が最大となるため、z が出力されま