相変わらず、ログの集計。
今回は、ログファイルより特定のキーワードが含まれる行を取得したい。
特定のキーワードは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に変換
同じカテゴリの記事
コメントを残す