『壹』 在python中怎麼匹配IP地址
『貳』 python判斷IP地址合法性程序題有個小問題求助!!
if count == 4:
print('yes')
else: #這里需要對應一個else
print('no')
『叄』 如何檢查一個字元串在python的IP地址模式匹配
是用re模塊。具體代碼如下:
import re
pattern = re.compile(
r"((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))")
x = "sljflafja10.10.10.11flksjfklsajf00.00.1xxxx22.222.222.22"
y = "fjlsfjla10.10.10.10jkfsjf"
z = "10.10.10.10"
a = pattern.findall(x)
b = pattern.findall(y)
c = pattern.findall(z)
ips1 = [g[0] for g in a]
ips2 = [g[0] for g in b]
ips3 = [g[0] for g in c]
print ips1
print ips2
print ips3
輸出結果:
['10.10.10.11', '22.222.222.22']
['10.10.10.10']
['10.10.10.10']
主要是IP地址的正則表達式比較復雜,python中的正則表達式使用還是比較簡單的。
『肆』 python中判斷一個字元串是否是IP地址
首先給出一個c函數的原型:int sscanf(const char *buffer,const char *format,[argument ]...)它的返回值是參數的數據,也就是argument的個數,buffer:存儲的數據,format:格式控制字元串,argument:選擇性設定字元串。這個程序從標准流讀取數據,可以進行無限制的輸入。下面貼出代碼,然後引出另外一個問題,將字元串ip轉換成整形ip地址。[cpp]
#include<stdio.h
#include<string.h
int main(void){
char str[32];
int a,b,c,d;int ret=0;
while(fgets(str,sizeof(str),stdin)!=NULL){
int len=strlen(str);
str[len]='\0';
ret=sscanf(str,%d.%d.%d.%d,&a,&b,&c,&d);
if(ret==4&&(a=0&&a<=255)&&(b=0&&b<=255)&&(c=0&&c<=255)&&(d=0&&d<=255)){
printf(it is ip!\n);}else
printf(it is not ip!\n);}return 0;}gcc -Wall ip.c -o ip12.3.4.5
下面來引出另外一個問題,在很多情況下,要求把字元串ip轉換成整形ip,這個問題也可以應用sscanf這個函數,首先把四個欄位存儲到a,b,c,d四個變數當中去,然後進行移位運算,因為ip地址是32位的,而且是無符號整形變數,所以可以應用unsigned int 來存儲. unsinged int ip=(a<<24)+(b<<16)+(c<<8)+d。
『伍』 python匹配IP和埠
importre
results=re.findall('(?isu)<td>(d+).(d+).(d+).(d+)</td>s*<td>(d+)</td>',your_html)
forip,portinresults:
print'%s:%s'%(ip,port)
『陸』 Python正則表達式匹配Ip地址和文件地址
『柒』 用python處理一含有300萬條ip地址的文本,需得出每個ip在文本中重復的次數。得到一個ip , 次數的文本。
300萬條不是很多。你可以使用字典,或者是Counter來統計。
通常來講字典大小略大的時候,效率會很低。所以就要優化演算法。
如果想避開字典限制的問題,可以使用redis來記數。速度慢些。但是很靠譜。
處理速度取決於進程數量,如果多進程處理,最後再將數據合並就會快很多。如果使用REDI就不用合並了。REDIS可以採用多進程加多線程方式。
如果還想更快就採用CYTHON,或者是直接用MAP REDUCE,採用多計算機同時處理。絕對快。
還有一個更簡單快速的辦法,用C語言吧。將IP地址轉換成整數。然後用C語言來記數,絕對快。編程也簡單。轉成整數的方法對於PYTHON也有效。
『捌』 Python正則表達式匹配IP地址的問題
表示非捕獲組,即只匹配這個組裡面的內容,而不會將這個組添加到group中,不佔用group的位置。
『玖』 python 批量處理(通過ip地址獲取機器名)
importsys,socket
try:
ipLines=open('ip.txt').readlines()
results=[]
foripinipLines:
result=socket.gethostbyaddr(ip.replace(' ',''))
results.append(result[0])
print"Primaryhostname:"
print""+result[0]
print" Addresses:"
foriteminresult[2]:
print""+item
wr=open('hostname.txt','w+')
forhostinresults:
wr.write(host)
wr.write(' ')
wr.close()
exceptsocket.herror,e:
print"Couldn'tlookupname:",e
『拾』 python 正則表達式.*如何把ip地址提取出來
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importre
html='<bodystyle="margin:0px"><center>您的IP是:[42.120.74.89]來自:浙江省杭州市阿里雲</center></body></html>'
reg=re.compile(r'[(d{1,3}.d{1,3}.d{1,3}.d{1,3})]')
item=re.findall(reg,html)
printitem[0]