『壹』 在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]