Pythonで正規表現を活用!日付データの抽出と操作をマスターする方法

python

正規表現(Regular Expression)は、文字列操作を強力に支援するツールです。ログ解析、データクレンジング、テキスト検索と置換など、さまざまな用途で活用されています。本記事では、Pythonで正規表現を使って日付データを抽出し、そのデータを操作する方法について解説します。


1. 正規表現とは何か?

正規表現(Regular Expression)は、特定のパターンに一致する文字列を検索・抽出するための手法です。Pythonでは re モジュールを使用します。


2. 使用するデータセット

このデータセットは、日時、数値、ステータスの3つのフィールドを含むデータのリストです。

  • 日時: ‘YYYY/MM/DD HH:MM:SS’ 形式で記録された日時。
  • 数値: 取引価格や測定値を表す整数。
  • ステータス: データのラベルやランキングを示す識別子。
series = """
'2024/01/08 12:00:00', 100, '1st';
'2024/01/08 12:30:00', 110, '2st';
'2024/01/08 13:00:00', 120, '3st'
"""

3. ステップ1: 日付と時間を抽出する正規表現

import re

# 正規表現パターン
pattern = re.compile(r"\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}")

# 抽出
result = pattern.findall(series)
print("抽出された日時:", result)

4. ステップ2: 抽出した日時をPythonの日時型に変換

from datetime import datetime

# 日時型に変換
pydt = datetime.strptime(result[0].replace("'", ""), '%Y/%m/%d %H:%M:%S')
print(pydt)

5. ステップ3: 抽出データの操作

抽出した日付データは、さまざまな用途に活用できます。例えば、ログ解析では特定の期間のデータを抽出してトレンド分析を行ったり、レポート作成ではデータの整理・分類に利用できます。また、IoTデバイスの時系列データや金融市場の価格変動データを処理する際にも役立ちます。

5.1 例1: 秒単位の加算

from datetime import timedelta

# 10秒加算
new_time = pydt + timedelta(seconds=10)
print(new_time)

5.2 例2: 特定範囲内の日時を抽出

# 12時以内の時間を抽出
filtered = [dt for dt in result if re.search(r"12:\d{2}:\d{2}", dt)]
print(filtered)

6. 注意点

  1. パターンが複雑になるとパフォーマンスが低下する可能性がある。
  2. 入力データが予期しない形式の場合、エラーが発生することがある。

エラー処理の例

以下のコードでは、入力データが期待通りの形式でない場合にエラーハンドリングを行います。

from datetime import datetime

def safe_parse_date(date_str):
    try:
        return datetime.strptime(date_str.replace("'", ""), '%Y/%m/%d %H:%M:%S')
    except ValueError:
        print(f"エラー: 無効な日付形式 - {date_str}")
        return None

# 例
dates = ["2024/01/08 12:00:00", "invalid date", "2024/01/08 13:00:00"]
parsed_dates = [safe_parse_date(date) for date in dates]
print(parsed_dates)

このように、データのフォーマットが異なる場合でもプログラムがエラーで停止しないようにすることが重要です。 2. 入力データが予期しない形式の場合、エラーが発生することがある。


7. まとめ

正規表現を使うことで、データから必要な情報を効率的に抽出し、Pythonの機能と組み合わせることでさらなる操作が可能です。

正規表現の活用シナリオ

  • ログ解析: 大量のログデータから特定のエラーやイベントを抽出。
  • データクレンジング: 不規則なフォーマットのデータから一貫した情報を取得。
  • レポート作成: 時系列データの整理や集計に利用。
  • テキスト処理: ウェブスクレイピングで取得したデータから必要な情報のみ抽出。

日付データの抽出や複雑な情報の処理を行う際に、正規表現を適切に活用することで、作業の自動化や効率化が実現できます。

コメント

タイトルとURLをコピーしました