相変わらず、ログの集計。
今回は、ログファイルより特定のキーワードが含まれる行を取得したい。
特定のキーワードは2種類。
ログファイルなので、お決まりのフォーマットで出力されている。
キーワードが2つなので、正規表現を利用してみる。
正規表現モジュール
Pythonで正規表現を利用するためにはreをインポートする。
import re
単純に部分一致する行を見つけたいのであれば以下の様で良い。
text = 'test X start' if re.search('(X start|X end)', text) is not None: print(text)
ファイルの内容を行単位で繰り返し評価する場合は、正規表現オブジェクトをあらかじめ作成しておいた方が良いかも。
r = re.compile('(X start|X end)') with open('log.log', 'r') as r: for line in r: if r.search(line) is not None: print(line.strip())
re.searchの戻り値を利用する
単純に存在するかどうかを判定するだけであれば、is not Noneで評価すればよいが、matchオブジェクトが返ってきているので、それを使うのも良い。
text = '----+----1----+----2----+----3' m = re.search('1.*2', text) print(m.group()) print(m.start()) print(m.end()) print(m.span()) # 1----+----2 # 9 # 20 # (9, 20)
m.start()やm.end()は、文字の切り出しに便利かもしれない。
まとめ
正規表現は書き方がわかるといろいろ便利。
同じタグの記事
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
同じカテゴリの記事