2013-04-09 50 views
0

我正試圖通過google電子表格中的一堆jiberish文本進行過濾,並且只需將IP地址並將其存儲起來,以便日後可以對其進行比較。 IE用戶將在JavaScript或Python從塊數據中提取IP地址

"Summary: unauthorized ms-rdp traffic 
Notes: SRC_IP: 211.238.202.137 91.212.144.2 92.66.145.194 121.229.128.42 81.162.195.34 81.88.125.86 213.42.28.188 85.21.42.240 94.56.89.117 177.55.40.14 219.69.14.40 
SRC_Port: 
SRC_Country: US KR IL CN CZ AE RU BR TW 
DST_IP: MANY 
DST_Port: 
DST_Country: US 
Campus_Agency:" 

腳本存儲所有scr_ip地址的和以後如果需要的話,用戶可以輸入如211.238.202.137的IP地址,它會返回一個驗證IP的聲明是在或者不在, 列表。我試過了,如果沒有運氣,我一直在嘗試不同的變化,我認爲這只是我的技能一點點。最近我來是很拽的IP地址,但它們排序按價值計算,因此他們沒有符合原稿

+0

發佈您的代碼。 – dstronczak 2013-04-09 12:56:10

回答

2

快速正則表達式,翻出所有的IP地址,如文本:

import re 

ipaddress = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') 

addresses = ipaddress.findall(inputtext) 
if '211.238.202.137' in addresses: 
    print 'We have a match!' 

對於您的示例文本中,.findall()調用返回:

>>> ipaddress.findall(inputtext) 
['211.238.202.137', '91.212.144.2', '92.66.145.194', '121.229.128.42', '81.162.195.34', '81.88.125.86', '213.42.28.188', '85.21.42.240', '94.56.89.117', '177.55.40.14', '219.69.14.40'] 
+1

123.456.789.876是一個有效的IP地址? – jarnbjo 2013-04-09 13:04:45

+1

@jarnbjo:它將所有* ip-address-like文本*取出。 :-)在Python 3.3中,我們可以使用'ipaddress'模塊來驗證它們。但是,是的,這是假定輸入文本只包含實際在正確範圍內的虛線四邊形,但這不是一個巨大的飛躍。 – 2013-04-09 13:05:45

0
import re 

text = """Summary: unauthorized ms-rdp traffic 
Notes: SRC_IP: 211.238.202.137 91.212.144.2 92.66.145.194 121.229.128.42 81.162.195.34 81.88.125.86 213.42.28.188 85.21.42.240 94.56.89.117 177.55.40.14 219.69.14.40 
SRC_Port: 
SRC_Country: US KR IL CN CZ AE RU BR TW 
DST_IP: MANY 
DST_Port: 
DST_Country: US 
Campus_Agency:""" 

"""This will store all the ips in the text variable in a list called ips""" 
ips = re.findall('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', text, re.DOTALL) 

ipEntered = raw_input('Please enter an IP: ') 
if ipEntered in ips: 
    print 'The IP you entered is in the list.' 
else: 
    print 'The IP you entered is not in the list.'