2012-08-30 86 views
-3

我在試圖找到一種方法來解析出python的某些信息。這裏是輸入我需要解析/提取物:用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

如何粘貼代碼在這裏?它是[code] [/ code]? –

+0

No \'code \'〜沒有移位的密鑰 –

+0

在你的問題的編輯器中有一個格式按鈕。選擇代碼並敲擊大括號以執行4個空格縮進。不要把它放在評論中。沒有人可以閱讀這個 – jdi

回答

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 
+0

沒有關聯,因爲有一個單獨的主函數需要一個xml文件,然後調用這個函數來解析它。因此,從xml文件的內容填充與您的原始變量完全相同的「消息」變量。 –

+0

我很感謝你對這個jdi的投入。它接近我正在尋找的東西,但我需要將每個項目放入一個單獨的變量中。也許我可以拆分「:」?然後我會得到我不想要的字符串中的單引號。 還有其他建議嗎? –

+0

例如: username = chango domain = world 等 我需要將值聲明爲單獨的變量。 –