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行 を抽出した
  • 次回は、正規表現を使って「数値だけ」を抜き出す方法を紹介します
Parser
スポンサーリンク
この記事を書いた人

運営者について

当サイトは、個人が運営する学習・記録ブログです。

AI・データサイエンス・自動化を中心に、
Python、G検定・DS検定の学習内容や、
実際に試しながら整理した知識をまとめています。

特定の企業や団体に属さない個人サイトとして、
学習過程で得た気づきや判断の整理を目的に運営しています。

「知識はあるが、どう使えばよいか分からない」
「情報が多く、判断に迷ってしまう」
といった状態を減らすことを目的に発信しています。

専門家として教える立場ではなく、
自分自身がつまずき、試し、整理してきた過程をそのまま共有するスタイルです。

用語の暗記やテクニックの紹介よりも、
・なぜそう考えるのか
・どの順番で判断するのか
・どこで迷いやすいのか
といった思考の整理を重視しています。

学び場をフォローする
学び場をフォローする
タイトルとURLをコピーしました