当前位置: 首页 > 知识库问答 >
问题:

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

慕容晔
2023-03-14

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

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

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()

共有1个答案

葛飞扬
2023-03-14

我建议保持简单,在捕获组的帮助下匹配所有的IP地址:

ip = 'some text here 127.123.456.789 blah blah'
ip_out = re.sub(r'\b(\d+\.\d+\.\d+)\.\d+\b', r'\1.0', ip)
print(ip_out)  # some text here 127.123.456.0 blah blah
 类似资料:
  • 问题内容: 我正在尝试进行测试以检查sys.argv输入是否与IP地址的RegEx相匹配… 作为一个简单的测试,我有以下内容… 但是,当我向其中传递随机值时,在大多数情况下,它会返回“可接受的IP地址”,除非我的“地址”基本上等于。 问题答案: 您必须通过以下方式修改您的正则表达式 这是因为通配符代表“每个字符”

  • 问题内容: 我使用计算机通过以太网与硬件进行通信。为了与此设备通信,我将ip设置为192 168 0 11,子网掩码设置为255 255 255 0,对于IPv4,默认网关设置为192 168 0 1。要使用互联网,我可以通过控制面板选择“自动获取IP地址”。 我想要一个允许我快速选择一个或另一个以太网设置(硬件或Internet)的脚本。 我主要使用python编程,但也许有一个批处理文件解决方

  • 本文向大家介绍python获取本机所有IP地址的方法,包括了python获取本机所有IP地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python获取本机所有IP地址的具体代码,供大家参考,具体内容如下 运行结果 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python实现查询IP地址所在地,包括了python实现查询IP地址所在地的使用技巧和注意事项,需要的朋友参考一下 使方法一、用IP138数据库查询域名或IP地址对应的地理位置。 方法二、本来想调用阿里的ip接口查询ip归属地。结果发现阿里的接口非常不给力,主要是不准确,不过是免费的且有地区和ISP的信息。以下是实现代码 但是多次查询发现ip归属地不准确,于是使用17mon的ip查

  • 我想确保用户在JavaFX TextField(0.0.0.0255.255.255.255)中输入有效的IPv4地址,但我似乎找不到任何有效的解决方案。 我尝试了该代码: 但是我连一个数字都打不出来...它似乎只用一个输入就可以工作