????由于開發(fā)需要汰寓,大部分時間都是用java來實現(xiàn)需求的,但是由于對python的喜愛苹粟,豈是這種程度的事情所能阻止的有滑,因此在閑余之際,還是想要用python來搞一些事情的嵌削,閑話就到此為止毛好。
????在最近的需求中,我需要對IP地址進行處理獲取網(wǎng)絡號和主機號(默認C類IP地址)苛秕。
????python中對字符串進行操作可以有正則表達式和切片可供使用肌访,對應java中的是正則表達式和substring。
代碼1:
>ip = "192.168.0.1"
首先是截取網(wǎng)絡號想帅,正則代碼如下:
代碼2:
>networkNum = re.match(r"(\d+\.){2}(\d+)",ip).group()
切片代碼:
代碼3:
>networkNum = ip[0:ip.rindex('.')]
獲取主機號场靴,正則代碼:
代碼4:
>strinfo = re.compile(r"(\d+\.){3}")
>hostNum = strinfo.sub('',ip)
>or:
>hostNum = re.sub(r"(\d+\.){3}","",ip)
????當然用正則表達式獲取主機號還有replace方法,但是到寫這篇博客的時候我還沒研究出如何用replace來獲取主機號港准。
切片代碼:
代碼5:
> hostNum = ip[ip.rindex('.')+1:]
????從上邊的代碼中已經(jīng)看出切片在截取字符串上的強大了旨剥,完全一句話就可以搞定,但是其中確實有一些坑存在的浅缸。
????首先:在代碼5中轨帜,需要獲取IP最后一段的值,在最開始我寫的是:
> hostNum = ip[ip.rindex('.')+1:-1]
????這樣的結(jié)果是我沒有獲取到主機號衩椒,再仔細研究一下切片后發(fā)現(xiàn)切片所適用的數(shù)學表達式是 “[ )”蚌父,也就是前邊的包含的,而后邊是不包含的(自幼數(shù)學不好毛萌,不知道該怎么用專業(yè)的方法表述)苟弛,這個錯誤可是非常低級,但卻又是非常致命的阁将,畢竟 這東西是不會報錯的膏秫!不會報錯的!不會報錯的做盅!所以在日常使用中選好方法缤削,做好備注!做好備注吹榴!做好備注亭敢!,當然這只是在提醒我自己图筹,畢竟我才是小菜雞帅刀。