-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 回答