????由于開發(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è)的方法表述),這個錯誤可是非常低級,但卻又是非常致命的,畢竟 這東西是不會報錯的!不會報錯的!不會報錯的!所以在日常使用中選好方法,做好備注!做好備注!做好備注!,當然這只是在提醒我自己,畢竟我才是小菜雞。