小编nep*_*hos的帖子

Python - 从字符串解析IPv4地址(即使在审查时)

目标:编写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 [dot] 1或192.168.1(dot)1或192 .168 .1 .1或192. 168. 1这些审查方法适用于任何一个点(例如:192 [.] 168 [.] 1 [.] 1).


正如你可以从上面看到的,我在努力寻找一种方法,通过可能包含在"审查"的多种形式描绘的IP地址一个txt文件解析(防止超链接).

我认为正则表达式是要走的路.也许会说些什么; 四个整数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 re

def 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 ips

myFile = open('***INSERT FILE PATH HERE***')
fileContent = …
Run Code Online (Sandbox Code Playgroud)

python regex ipv4 data-extraction python-2.7

5
推荐指数
2
解决办法
1万
查看次数

如何在字典列表中向字典添加键?

我似乎找不到以下答案的简单问题:

如何将关键字添加/添加到位于词典列表中的词典中?


鉴于以下列表:

list = [{'key-1': 'value-1', 'key-2': 'value-2'}, {'key-A': 'value-A'}]
Run Code Online (Sandbox Code Playgroud)

我想'key-B": "value-B'在第二个字典中添加以下结果:

list = [{'key-1': 'value-1', 'key-2': 'value-2'}, 
        {'key-A': 'value-A', 'key-B': 'value-B'}]
Run Code Online (Sandbox Code Playgroud)

我想我可能只是.update.append给它,但没有这样的运气。

非常感谢您的协助。

dictionary list python-2.7

5
推荐指数
1
解决办法
4319
查看次数

标签 统计

python-2.7 ×2

data-extraction ×1

dictionary ×1

ipv4 ×1

list ×1

python ×1

regex ×1