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