亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用Python判定IP地址合法性的三種方法

系統 2171 0

在幫朋友解決這個問題后,隨便記錄一下這三種方法:

第一種方法:使用正則表達式:

因為當時的要求是判定10.0.0.1 到 10.255.255.255,原理其實是一樣。這里簡單回顧一下正則表達式模式的內容:

常見的如:
\d 可以表示0~9的任意一個數字字符而\D是匹配一個非數字字符等價于^ ^是匹配字符串的開頭,但放在[]中表示匹配不在[]中的字符
$是匹配字符串的末尾
.是匹配除了換行符任意字符
{}表示重復幾次,例如:^a{2,4} $ aa,aaa或aaaa
| 的是或的意思
[]表示匹配括號里面的給出內容像[aeiou]則匹配中括號內的任意一個字母,注意一個中括號只對應一個位置,例如[Pp]ython是匹配 “Python” 或 “python”,而rub[ye]則匹配 “ruby” 或 “rube”。同理[a-z]是匹配任何小寫字母,復雜一點的如^ [a-zA-Z_] $是匹配所有的字母和下劃線。
\是轉義字符,更方便使用在字符串前面加r表示原生字符串解決反斜杠困擾

然后收集了一些可能使用的:
數字:^ [0-9]* $
n位的數字:^ \d{n} $
漢字:^ [ \u4e00-\u9fa5]{0,}$
英文和數字:^ [A-Za-z0-9]+$ 或 ^ [A-Za-z0-9]{4,40}$
Email地址:^\w+([-+.]\w+) @\w+([-.]\w+) .\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
IP地址:((?: (?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)) 或 ^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9]).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d).(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$
其中:
1\d{2}的意思就是100~199之間的任意一個數字
2[0-4]\d的意思是200~249之間的任意一個數字
25[0-5]的意思是250~255之間的任意一個數字
[1-9]\d的意思是10~99之間的任意一個數字
[1-9])的意思是1~9之間的任意一個數字

            
              import re
def check_ip(ipAddr):
    compile_ip = re.compile('^(10)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)')
    if compile_ip.match(ipAddr):
        return True
    else:
        return False

            
          

第二種方法:字符串拆解

主要是采用Python中的split()方法通過指定分隔符對字符串進行切片,如果參數num有指定值,則分隔 num+1 個子字符串
split()方法語法:str.split(str="", num=string.count(str)).
str – 分隔符,默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
num – 分割次數。默認為 -1, 即分隔所有。
返回值是返回分割后的字符串列表。

            
              #!/usr/bin/python
import sys
def check_ip(ipAddr):
    addr = ipAddr.strip().split('.')
    for i in range(4):
        try:
            addr[i] = int(addr[i])
        except:
            print("check ip address failed!")
            sys.exit()
        if 255 >= addr[i] >= 0:
            pass
        else:
            print("check ip address failed!")
            sys.exit()
        i += 1
    else:
        print("check ip address success!")

            
          

第三種方法:使用IPy庫

一個專門處理IP的第三方庫,需要自行安裝:

            
              import IPy 
def check_ip(ipAddr): 
  try: 
    IPy.IP(address) 
    return True
  except Exception as e: 
    return False

            
          

總結:

總的來說初學者使用字符串拆解比較簡單,也容易理解。正則表達式功能強大但是相對復雜在寫的時候很容易犯錯,所以在爬蟲中使用相對較少了,最后的直接使用第三方庫算是比較方便的方式。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美日韩生活片 | 毛片女人十八以上观看 | 特级黄色视频毛片 | 亚洲成片观看四虎永久 | 不卡在线播放 | 成人免费毛片观看 | 亚洲一区国产 | 中文字幕亚洲精品久久 | 免费一级a毛片在线播出 | 亚洲国产精品久久精品成人 | 成年女人视频播放免费观看 | 精品国产一区二区三区久久 | 尤物视频一区二区 | 成人午夜爱爱爱爱爱 | 精品亚洲性xxx久久久 | 成人中文字幕一区二区三区 | 女人洗澡一级毛片一级毛片 | 成人一a毛片免费视频 | 欧美日韩影视 | 福利不卡 | 国产精品视频999 | 91国在线 | 精品久久久久久久一区二区手机版 | 久久中文字幕网 | 亚洲一级毛片 | 操片免费| 老子午夜伦影理论片 | 欧美成人在线免费视频 | 黄色免费网站在线观看 | 网友自拍视频悠悠在线 | 在线成人亚洲 | 在线婷婷| 九九精品热线免费观看6 | 日本一级看片免费播放 | 国产精品1| 男人的天堂欧美精品色偷偷 | 在线不卡一区二区 | 老太婆性杂交毛片 | 老司机亚洲精品影院在线 | 6一10周岁毛片免费 6一10周岁毛片在线 | 久久久噜噜噜www成人网 |