〜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行 を抽出した
- 次回は、正規表現を使って「数値だけ」を抜き出す方法を紹介します