Pythonで文字クラスと文字セットを効率的に使用する方法

この記事ではPythonで文字クラスと文字セットを効果的に使う方法について詳しく解説します。具体的なコード例、その詳細な解説、および応用例を複数含めています。

目次

文字クラスとは

文字クラスとは、特定の文字にマッチする正規表現の一部です。一般的には角括弧([])内にマッチさせたい文字を列挙します。

基本的な使用例

以下はPythonで文字クラスを使って数字だけを取り出す基本的な例です。

import re

text = "年齢は25歳、身長は175cmです"
result = re.findall(r'[0-9]+', text)
print(result)

このコードでは正規表現の`[0-9]+`が使われており、数字(0-9)に一回以上(+)マッチします。結果として[’25’, ‘175’]が出力されます。

文字セットとは

文字セットは、文字の集合体です。Pythonで文字セットを扱う際には、`set`型が一般的に用いられます。

基本的な使用例

以下はPythonで文字セットを使って、テキスト内の一意な文字を取り出す基本的な例です。

text = "apple"
unique_chars = set(text)
print(unique_chars)

このコードでは、文字列”apple”を`set`型に変換しています。その結果、`{‘a’, ‘p’, ‘l’, ‘e’}`が出力されます。

文字クラスと文字セットの組み合わせ

Pythonでは文字クラスと文字セットを組み合わせて、より高度なテキスト処理が可能です。

組み合わせの例1:電話番号の抽出

例えば、テキストから電話番号を抽出する場合を考えます。

text = "お問い合わせは03-1234-5678または080-9876-5432まで"
pattern = r'0[0-9]{1,4}-[0-9]{1,4}-[0-9]{1,4}'
result = re.findall(pattern, text)
print(result)

この例では、文字クラス`[0-9]`と`{n,m}`(n回以上、m回以下)を使っています。結果として、`[’03-1234-5678′, ‘080-9876-5432’]`が出力されます。

組み合わせの例2:独自のフィルタリング

文字セットを用いて、特定の文字だけを含む単語を抽出する場合を考えます。

text = "apple banana cherry date"
allowed_chars = set("aeiou")
words = text.split()
filtered_words = [word for word in words if set(word) <= allowed_chars]
print(filtered_words)

この例では、`set`型の部分集合演算(`<=`)を用いています。出力は`['aeiou']`です。

まとめ

Pythonで文字クラスと文字セットを効率的に使用する方法について解説しました。これらの機能はテキスト処理において非常に強力ですので、ぜひマスターしてください。

コメント

コメントする

目次