,如果你只需要輸入它是如何呈現的數據和格式,它似乎是一個簡單的解析器可能的工作:
先切和串粘貼到一個文本文件(我稱之爲cut_and_paste.txt) :
Virus: Stuxnet
Computer: HP_1234
Domain: ABC\
IP: 192.168.10.1
User: user1
File: C:\Users\user1\AppData\Local\Microsoft\Windows\malo.png
Date/Time: 10/19/2015 22:23:57
Result: Cleaned
Virus Scan Engine: 421.6000.1009
Virus Pattern: 419.9890.0009
現在你可以加載該文件,並解析字符串轉換爲Python字典有一個非常簡單的腳本:
with open('cut_and_paste.txt', 'r') as infile:
data = dict()
for line in infile:
pair = line.strip().split(':')
data[pair[0]] = pair[1]
注意,這可以做更多的「PYT但是我使用了一種更容易遵循的表格,因爲你說的不像腳本那麼好用。
其基本思想是以讀取模式('r')打開文件並將其命名爲'infile',然後創建一個Python字典,允許您將數據組織爲鍵值對。對於文件中的每一行「去掉」這一行,刪除所有空格(在這種情況下基本上是換行符),然後在冒號上分割這一行。最後,通過設置dict [key] = value填充字典,因此在下一行中,冒號左側的所有內容都成爲一個鍵,右側的所有內容都成爲一個值。
當您生成報告,您可以然後使用鍵恢復數據:
print 'Take a look at the following issue:'
print 'Infection Name:', data['Virus']
print 'IP Address:', data['IP']
...
...
如果你只是想產生這樣一個簡單的報告,那麼文件的解析應該做的伎倆。正則表達式會發揮作用,如果你想做一些更復雜的值本身。例如,您可能想要查找某個範圍內的IP地址等。
但是,從我可以從問題中收集的信息看來,這樣一個非常簡單的解析器應該能夠解決這個問題。
希望它可以幫助基於您的後續問題
編輯:
還有就是從字典中恢復值(即我也許應該在原來的答覆已經使用了更穩健的方式,但我試圖保持簡單)
的傳統方法從字典中獲得的數據是在原有的回答說:
print data['key']
這很簡單,但正如你發現拋出一個KeyError如果一個關鍵不存在。你可以用一個小的修改克服這個使用字典的get方法:
print data.get(key)
或
print data.get(key, default)
在這兩種情況下,我有一個字符串關鍵這代表什麼關鍵你正在尋找。
如果我修改報告的一部分生成(例如)一個錯字的代碼導致,這並不存在,你可以看到這些工作的關鍵:
print 'Infection Name:', data.get('Virusx')
print 'Infection Name:', data.get('Virusx', 'Not Found')
而原始的代碼會拋出一個KeyError異常這些 這些各自產生以下輸出:
Infection Name: None
Infection Name: Not Found
在第一種情況,當「Virusx」不能在字典中的默認行爲是返回無,然後將其轉換成字符串「無」中找到
此方法還允許您添加第二個參數,該參數定義了在無法找到密鑰時您希望Python如何響應。在這種情況下,我告訴Python返回一個字符串'Not Found',儘管您可以用任何字符串替換它以滿足您的需要。例如,返回空字符串可能是指示缺失數據的有效方法。
第二編輯
基於新的信息,它看起來像你需要使用的maxsplit選項分裂方法。這允許您指定「分裂」的最大數量,以及它的工作原理是這樣的:
input_string = 'File: C:\Windows'
insufficient = input_string.split(':')
print insufficient
correct = input_string.split(':', 1)
print correct
我把結果彼此相鄰,使差異更加明顯:
insufficient --> ['File', ' C', '\\Windows']
correct --> ['File', ' C:\\Windows']
基本上它聽起來好像字符串被分割了太多次,而且你很可能只訪問前兩個分段(因此失去了剩餘部分)。
你能提供一個你想要的輸出的例子嗎? –