【发布时间】:2020-08-09 07:17:24
【问题描述】:
我是 python 和正则表达式的新手,我一直试图在 txt 文件中隐藏 IP 地址日志。我应该避免使用 for 循环和 if 检查 - 如果可能,因为 txt 文件很大(158MB)。
(所有IP地址都以172开头)
这是我尝试过的代码:
import re
txt = "test"
x = re.sub(r"^172\.*", "XXX.\", txt)
print(x)
示例 txt 文件:
ABCDEFGHIJKLMNOPRST172.12.65.10RSTUVYZ
ASDG172.56.23.14FSDGHSFSDFDSFHSF
!'^%%&!'+!'+^%&!ÂSDBSDF172.23.23.23SADASFSA
ASGFGD 172.12.23.56 ASDSAFASFDASSADSA
期望的输出:
ABCDEFGHIJKLMNOPRSTXXX.XXX.XXX.XXXRSTUVYZ
ASDGXXX.XX.XX.XXFSDGHSFSDFDSFHSF
!'^%%&!'+!'+^%&!ÂSDBSDFXXX.XXX.XXX.XXXSADASFSA
ASGFGD XXX.XXX.XXX.XXX ASDSAFASFDASSADSA
【问题讨论】:
-
re.sub(r'(172\.\d{1,3}\.\d{1,3}\.\d{1,3})', "XXX.XXX.XXX.XXX", text) -
另一个问题,在声明部分我将“test”作为字符串分配给 txt 变量。但是,我想从文件中读取它我该怎么办?我使它像: txt = open("test.txt", "r+") x = re.sub(r'(172\.\d{1,3}\.\d{1,3}\.\ d{1,3})', "XXX.XXX.XXX.XXX", txt) 但它给出了一个类型错误:TypeError: expected string or bytes-like object