目标:编写Python 2.7代码以从字符串中提取IPv4地址。字符串内容示例:以下是IP地址:192.168.1.1、8.8.8.8、101.099.098.000。这些也可以显示为192.168.1 [。] 1或192.168.1(。)1或192.168.1 [dot1]或192.168.1(dot)1或192 .168 .1 .1或192. 168. 1 1.并且这些检查方法可以应用于任何点(例如:192 [。] 168 [。] 1 [。] 1)。从上面可以看到,我正在努力寻找一种方法来解析一个txt文件,该文件可能包含以“检查”(以防止超链接)的多种形式描述的IP。我认为正则表达式是行之有效的方法。也许说些什么;四个整数0-255或000-255的任何组合,以“分隔符列表”中的任何内容分隔,该分隔符由句点,方括号,括号或任何其他上述示例组成。这样,可以根据需要更新“分隔符列表”。不知道这是否是正确的方法甚至是可能的方法,对此将提供任何帮助,我们将不胜感激。更新: 由于下面的递归答案,我现在在上面的示例中使用了以下代码。它会...找到IP将它们放入列表清理它们的空间/大括号/等并将未清除的列表条目替换为已清除的列表条目。注意:以下代码不能解释不正确/无效的IP,例如192.168.0.256或192.168.1.2.3。目前,它将删除前面提到的尾随的6和3。如果其第一个八位位组无效(例如:256.10.10.10),它将删除前导2(结果为56.10.10.10)。import redef extractIPs(fileContent): pattern = r"((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)([ (\[]?(\.|dot)[ )\]]?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})" ips = [each[0] for each in re.findall(pattern, fileContent)] for item in ips: location = ips.index(item) ip = re.sub("[ ()\[\]]", "", item) ip = re.sub("dot", ".", ip) ips.remove(item) ips.insert(location, ip) return ipsmyFile = open('***INSERT FILE PATH HERE***')fileContent = myFile.read()IPs = extractIPs(fileContent)print "Original file content:\n{0}".format(fileContent)print "--------------------------------"print "Parsed results:\n{0}".format(IPs)
添加回答
举报
0/150
提交
取消