Python入門②:grep代わりにキーワード検索

Parser

〜Timing Reportから欲しい情報を探す〜

📝 はじめに

前回の記事では、Pythonでテキストファイルを開き、行数と文字数を数える方法を学びました。
今回は一歩進めて、grepのように「特定のキーワードを含む行」を抜き出す方法を解説します。

対象とするサンプルファイルは、前回用意した timing_sample.rpt です。


🎯 やりたいこと

  • Startpoint 行を見つけて表示する
  • slack 行を見つけて表示する

これで、「レポートのどこに重要な情報があるか」をPythonで探せるようになります。


✍️ コード例

以下のスクリプトを grep_like.py として保存してください。

#grep_like.py
#Timing Reportから特定のキーワードを含む行を抽出する
#検索対象のファイル

filename = "timing_sample.rpt"

#抽出したいキーワードのリスト

keywords = ["Startpoint", "slack"]

with open(filename, "r", encoding="utf-8") as f:
    lines = f.readlines()

#1行ずつチェック

for line in lines:
    for key in keywords:
        if key in line:
            print(f"[{key}] {line.strip()}")

▶️ 実行方法

ターミナルで次のコマンドを実行します。

python grep_like.py

出力例:

[Startpoint] Startpoint: U1/clk (rising edge-triggered flip-flop clocked by CLK)
[slack] slack (MET)                                     0.11

🔍 解説

  • with open(..., "r") でファイルを読み込む
  • readlines() でファイルを「行ごと」に分割
  • if key in line: でキーワードを含む行を検出
  • print(f"[{key}] {line.strip()}") で結果を整形して表示

この処理は、UNIXコマンドの grep とほぼ同じ動作です。
違いは、Pythonで書くことで「処理を拡張しやすい」こと。


💡 応用ポイント

  • keywords = ["Startpoint", "Endpoint", "slack"] とすれば複数同時検索可能
  • 大文字・小文字を無視したい場合は if key.lower() in line.lower(): と書ける
  • 抽出結果を別ファイルに保存することも簡単

✅ まとめ

  • Pythonを使えば grep のようにテキストから行を抽出できる
  • 今回は Startpoint行slack行 を抽出した
  • 次回は、正規表現を使って「数値だけ」を抜き出す方法を紹介します
タイトルとURLをコピーしました