正規表現を使ってログファイルを解析しています。 ログの例:Python正規表現の短縮化
<teststep timestamp="12040.310594" level="0" type="user" ident="1.2" result="pass">Signal STATUS_GET_VALUE response time Ok,\nSignal response time: 0.000000 [ms] \nSignal response time limit set: 100.000000 [ms]</teststep>
私はタイムスタンプと信号応答時間を抽出する必要があります。
この問題に対する私の解決策:
with open('report.xml') as f:
for line in f:
if 'Signal response time: ' in line:
timeStampL = re.findall('timestamp="\d*.\d*"', line)
responseTimeL = re.findall('Signal response time: \d*.\d*',
line, re.IGNORECASE)
timeStamp = float(re.findall('\d+.\d+', timeStampL[0])[0])
responseTime = float(re.findall('\d+.\d+', responseTimeL[0])[0])
私はこれが最短とこのデータを取得するための最良の方法ではないことを確信しています。 より良いアプローチを提案しますか?
お取置き....正規表現でXML/HTMLを処理しません。ここでは、ペイロードのBeautifulSoup、XPathの、ElementTreeの、... –
@WillemVanOnsemがはるかに使い、しかし、構造化されたXMLではありません。だからそれは不合理ではないようです。 – pvg
より良い方法は、同じ行を何度も何度も繰り返してマッチさせることではありません。 1つの正規表現はあなたが興味を持っていると思われる2つの値を簡単に引き出すことができるので、その正規表現を書いてください。または、動作していてパフォーマンスの問題でない場合は、そのまま使用してください。 – pvg