我是Python的新手 - 让我的脚湿透.
我想创建一个查找ip地址的循环,并使用循环计数作为密钥名称的一部分.
即
i = 0
while i < 5:
ip1= re.search(r'(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}', commandslist)
if ip1:
myip1 = ip1.group()
commandslist = commandslist.replace(myip1,'')
print 'found', ip1.group()
i=i+1
Run Code Online (Sandbox Code Playgroud)
我想做的是它说ip1或myip1用i的当前值替换1.我已经尝试过ip [i]并且只是抛出了没有被定义的错误.定义ip = range(0,5)似乎根本没有帮助.
有人能指出我回到正确的道路吗?谢谢.
不需要循环,你可以简单地写:
myip = re.findall(r'(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}', commandslist)
Run Code Online (Sandbox Code Playgroud)
当你真的需要循环时,请避免这样:
i = 0
while i < 5:
# do something with i
i = i + 1
Run Code Online (Sandbox Code Playgroud)
并使用此代替:
for i in xrange(5):
# do something with i
Run Code Online (Sandbox Code Playgroud)
当您需要迭代列表的元素时,请使用:
for e in l:
# do something with e
Run Code Online (Sandbox Code Playgroud)
在您的情况下,完整的示例可能如下所示:
import re
commandslist = 'Lorem 192.168.0.1, ipsum 127.0.0.1: 10.0.0.1 and 10.0.0.2.'
myips = re.findall(r'(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}', commandslist)
for ip in myips:
print 'found ', ip
Run Code Online (Sandbox Code Playgroud)