【问题标题】:check if IP address exist in URL return something else return something [duplicate]检查URL中是否存在IP地址返回其他内容返回一些内容[重复]
【发布时间】:2014-02-28 00:51:14
【问题描述】:

如何使用 Python 检查 URL 中是否存在 IP 地址? 有什么功能可以用来检查IP地址吗? 例如:data 1 & data 2 得到 IP 则返回 1,而 data 3 则返回 0

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")

【问题讨论】:

标签: python python-3.x


【解决方案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

【讨论】:

  • “<_sre.sre_match object at>”是什么意思?如果我想要数据 1 和数据 2 获得 IP 则返回 1,而数据 3 将返回 0
  • @user3340270 这意味着已找到匹配项,并且正在返回匹配项。如果没有匹配,则返回 None,如第四行所示。
  • @user3340270,见docs
【解决方案2】:

如果您想确保 IP 是正确的,您可以使用其他答案中建议的正则表达式从 url 中提取它,然后验证您可以使用 netaddr,它使用起来相当简单。

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

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 2011-11-26
    • 2010-09-17
    • 1970-01-01
    • 2022-01-23
    • 2011-03-13
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多