2014-02-27 95 views
0

如何使用Python檢查URL中是否存在IP地址? 有沒有可用於檢查IP地址的功能? 例如:數據1個&數據2有那麼IP返回1,而數據3將返回0檢查IP地址是否存在於URL中返回其他東西返回

data =['http://95.154.196.187/broser/6716804bc5a91f707a34479012dad47c/', 
     'http://95.154.196.187/broser/', 
     'http://paypal.com.cgi-bin-websc5.b4d80a13c0a2116480.ee0r-cmd-login-submit-dispatch-'] 

def IP_exist(data): 
    for b in data: 
     containsdigit = any(a.isdigit() for a in b) 
     if containsdigit: 
      print("1") 
     else: 
      print("0") 
+1

一個特定的IP地址或任何IP地址?在URL中還是在主機部分中的任何地方?即應該與http://google.com/search?q=127.0.0.1匹配嗎?那麼http:// me:[email protected]/呢? (StackOverflow顯示這些不帶'http://'部分,我懶得解決這個問題。) – tripleee

回答

1

使用正則表達式:

>>> import re 
>>> re.match(r'http://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.*', 'http://95.154.196.187/broser/6716804bc5a91f707a34479012dad47c/') 
<_sre.SRE_Match object at 0x7f4412043440> 
>>> re.match(r'http://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.*', 'http://paypal.com.cgi-bin-websc5.b4d80a13c0a2116480.ee0r-cmd-login-submit-dispatch-') 
>>> 

對於更細粒度的正則表達式的外觀here

+0

「0x02FEF758>中的<_sre.SRE_Match對象」是什麼意思? 如果我想要數據1和數據2得到IP然後將返回1,而數據3將返回0 – user3340270

+1

@ user3340270這意味着已找到匹配,並且它返回匹配。如果沒有匹配,則返回None,如第四行所示。 – Hugo

+0

@ user3340270,請參閱[文檔](http://docs.python.org/2/library/re.html#re.match) – warvariuc

0

如果你想確保IP是正確的,你可以使用其他答案中建議的正則表達式從URL中提取它,然後驗證你可以使用netaddr這是相當簡單的使用。

from netaddr import IP, AddrFormatError 
ip = extract_ip_from_url(url) 
try: 
    IP(ip) 
    return True 
except AddrFormatError: 
    return False 
相關問題