-3

Pythonで特定の情報を解析する方法を見つけようとしています。解析/抽出する必要のある入力は次のとおりです。

成功したネットワークログオン:

    User Name:      chango

    Domain:         world

    Logon ID:               (0x0,0x4BBE4382)

    Logon Type:     3

    Logon Process:  NtLmSsp

    Authentication Package: NTLM

    Workstation Name:       computer

    Logon GUID:     -

その入力から特定のデータを抽出する必要があります。特に、ユーザー名、ドメイン、login_ID、ログインタイプ、ログインプロセス、認証パッケージ、およびワークステーション名。

基本的に、これらの値のそれぞれを個別の変数に入れる必要があります。これを解析して必要なものを抽出する方法を理解するのに苦労しています。

私を助けてください。

コード:

def parse_xml(file):
    File_Read = open(file, "rb")
    mess =[]
    try:   

        tree = parse(File_Read)
        root = tree.getroot()

        for EventItem in root.findall("EventLogItem"):
            try:
                if "540" in EventItem.find("EID").text:

                    date = EventItem.find("genTime").text

                    message = EventItem.find("message").text

                    destination = re.findall(r'Target Server Name:\t(.+)\r', message)
                    #destination = re.findall(r'(Target Server Name:)', message)
                    #s = re.split(r'\n\t', message)
                    mess.append(s)
            except: pass    

    except: pass
    return mess
4

1 に答える 1

1

サンプル コードとサンプル入力の間に単一の相関関係は見られませんが、そのテキストをキーと値のペアに解析するだけであれば、おそらく単純な分割を行うことができます。これは、キーが常に:

raw = """
    User Name:      chango
    Domain:         world
    Logon ID:               (0x0,0x4BBE4382)
    Logon Type:     3
    Logon Process:  NtLmSsp
    Authentication Package: NTLM
    Workstation Name:       computer
    Logon GUID:     -
"""

parsed = dict(map(str.strip, line.split(':', 1)) for line in raw.split('\n') if line.strip())

print parsed

{'Authentication Package': 'NTLM',
 'Domain': 'world',
 'Logon GUID': '-',
 'Logon ID': '(0x0,0x4BBE4382)',
 'Logon Process': 'NtLmSsp',
 'Logon Type': '3',
 'User Name': 'chango',
 'Workstation Name': 'computer'}

print parsed['User Name']
# chango

username = parsed['User Name']
print username
# chango
于 2012-08-30T19:51:05.473 に答える