Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/regex:将文件中所有IP地址的第四个八位字节更改为.0_Python_Regex - Fatal编程技术网

Python/regex:将文件中所有IP地址的第四个八位字节更改为.0

Python/regex:将文件中所有IP地址的第四个八位字节更改为.0,python,regex,Python,Regex,我已经为此奋斗了一天多了;已经3年没有做Python了,现在开始展示! 我想让代码在文件中运行,并使用substitute将每个IP地址的最后八位字节更改为0。re子行不起作用,我在输出文件中得到的不是IP地址,而是以下内容: 0 这是正则表达式匹配对象加上我想要作为最后八位字节的0 还有密码。。。。 导入文件输入 导入re、系统、操作系统 file1='output.txt' ipv4Regex=re.compile(r'[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}\[0-

我已经为此奋斗了一天多了;已经3年没有做Python了,现在开始展示! 我想让代码在文件中运行,并使用substitute将每个IP地址的最后八位字节更改为0。re子行不起作用,我在输出文件中得到的不是IP地址,而是以下内容:

0

这是正则表达式匹配对象加上我想要作为最后八位字节的0

还有密码。。。。 导入文件输入 导入re、系统、操作系统 file1='output.txt' ipv4Regex=re.compile(r'[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}') def八位组四0() 对于fileinput.input()中的行: line=ipv4Regex.sub(str(re.search(ipv4Regex,line))+'..”。join(ipv4Regex.split('.')[:-1]+[“0”]),line.strip() #打印(行) 将open(file1,'a')作为f: f、 写入(第+'\n'行) fileinput.close() 打印“当前工作目录:%s”%os.getcwd() 如果名称=“\uuuuu main\uuuuuuuu”: #删除上一个文件 尝试: 删除操作系统(文件1) 除操作错误外: 通过 #运行函数 八位组(4)
我建议保持简单,在捕获组的帮助下匹配所有IP地址:

ip='这里的一些文本127.123.456.789诸如此类'
ip\u out=re.sub(r'\b(\d+\.\d+\.\d+\.\d+\.\d+\b',r'\1.0',ip)
打印(ip输出)#这里有一些文本127.123.456.0诸如此类

ipv4Regex
是一个已编译的正则表达式。您希望
ipv4Regex.split('.')
返回什么?如果您有其他带有数字和点的模式,正则表达式可能会收紧。这里有很多这样的正则表达式的例子,所以我不打算在这里临时创建一个。也许检查每个八位组是否在0-255范围内,也许检查边界是否为空白,而不是点。@tripleee OK…但谁说不可能有一个英语句子恰好以
1.2.3.4结尾。
,其中最后的点是一个停止?关于IP正则表达式,你是对的,我可以把它做得更紧。除了IP地址之外,OP是否会期待与上述正则表达式匹配的任何其他内容,这一点尚不清楚。这是一个非常好的工作,Tim,非常感谢。我试图让防火墙排除一周的检查点日志。您建议的正则表达式与任何其他数据都不冲突。再次感谢!!我本想说,如果可以的话,我会喊你一杯啤酒,但我刚刚在你的页面上看到了“给我买咖啡”链接。所以明天的咖啡我请客,伙计。@woodze,你这个摇滚兄弟<代码>:-) import fileinput import re, sys, os file1 = 'output.txt' ipv4Regex = re.compile(r'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') def Octet_4_0(): for line in fileinput.input(): line = ipv4Regex.sub(str(re.search(ipv4Regex,line))+'.'.join(ipv4Regex.split('.')[:-1]+["0"]), line.strip()) #print(line) with open(file1, 'a') as f: f.write(line+'\n') fileinput.close() print "Current working dir : %s" % os.getcwd() if __name__ == "__main__": # Delete the previous file try: os.remove(file1) except OSError: pass # Run the function Octet_4_0()