使用Python解析登录信息

时间:2012-08-30 19:26:16

标签: python parsing extraction

我正试图找到一种用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

1 个答案:

答案 0 :(得分: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