目标:编写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如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) 我似乎找不到以下答案的简单问题:
如何将关键字添加/添加到位于词典列表中的词典中?
鉴于以下列表:
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给它,但没有这样的运气。
非常感谢您的协助。