0

Python を使用して、一致したテキストに基づいてアプリケーション ログからデータのスタンザを取得しようとしています。疑似例は次のようになります。

Error_Paragraph = [
    data1 = 'abcdefg'
    data2 = '123556'
    data3 = 'supercalifragilistic'
    data4 = 'expealadocious'
    ....
    data106 = 'critical info'
    ....
]

これらのログには多くのスタンザがあります...すべて「data106」タイプの識別子が付いています。「Error_Paragraph」に一致するスタンザのみを取得する最良の方法は何ですか? 段落全体を取得すると便利ですが、「Error_Paragraph」の「data106」のみを具体的に探しています

これを何度か繰り返してみましたが、段落を正しく読み込めないようです。本当にいいのは、これをすべて辞書に吸い込んで、必要に応じてアイテムにアクセスできるようにすることです。

ありがとう!

現在の試みの例:

import re
import gzip
import sys

f = gzip.open( sys.argv[1], 'rb')

dataDict = re.findall(r"Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)

print dataDict

次の出力が得られます。

File "./logfile.txt", line 10
dataDict = re.findall(f"^\$Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)
4

1 に答える 1

1

[これらのスタンザに括弧が含まれていないと仮定すると、]検索できます

Error_Paragraph = \[[^\]]*data106 = '([^']*)'

次に、試合の を見てください.groups(1)re.findall()自動的にそれを行います:

>>> import re
>>> s = """Some_Paragraph = [
...     data1 = 'abcdefg'
...     data106 = 'uninteresting info'
... ]
...
... Error_Paragraph = [
...     data3 = 'supercalifragilistic'
...     data106 = 'critical info'
... ]
...
... Other_Paragraph = [
...     data4 = 'expealadocious'
...     data106 = 'boring info'
... ]"""
>>> re.findall(r"Error_Paragraph = \[[^\]]*data106 = '([^']*)'", s)
['critical info']
于 2013-08-01T21:51:48.693 に答える