Python 匹配后用换行符替换单词
我使用的是python 3.6,我有一个文件如下所示:Python 匹配后用换行符替换单词,python,Python,我使用的是python 3.6,我有一个文件如下所示: interface Ethernet94 profile users-1 ! interface Ethernet95 profile users-admin ! interface Ethernet96 profile users-reg ! 我想根据上面一行的接口号,选择替换“profile”后面的单词 因此,要将Ethernet96接口从profile user
interface Ethernet94
profile users-1
!
interface Ethernet95
profile users-admin
!
interface Ethernet96
profile users-reg
!
我想根据上面一行的接口号,选择替换“profile”后面的单词
因此,要将Ethernet96接口从profile users reg
更改为profile users all
,我尝试了以下方法:
#/usr/bin/env蟒蛇3
导入系统
导入文件输入
filename='/root/test'
对于fileinput.input([filename],inplace=True)中的行:
如果line.strip().startswith('interface Ethernet96\n配置文件'):
行='接口Ethernet96\n配置文件用户所有'
系统标准输出写入(行)
但这对文件没有任何影响。我找不到解决方案,因为所有的例子都显示了如何逐字替换。但是我不能基于其名称更改配置文件,因为我可以使用同一配置文件拥有多个接口
请协助 A
regex
就可以了
from pathlib import Path
import re
file = Path("file.txt")
content = file.read_text()
content = re.sub(r"(interface Ethernet96\nprofile) ([-\w]+)", r"\1 users-all", content)
file.write_text(content)
使用Ethernet96行的标记更换线路
from pathlib import Path
file = Path("file.txt")
content = file.read_text().splitlines()
row_idx = content.index("interface Ethernet96")
content[row_idx + 1] = "profile users-all"
一个
regex
就可以了
from pathlib import Path
import re
file = Path("file.txt")
content = file.read_text()
content = re.sub(r"(interface Ethernet96\nprofile) ([-\w]+)", r"\1 users-all", content)
file.write_text(content)
使用Ethernet96行的标记更换线路
from pathlib import Path
file = Path("file.txt")
content = file.read_text().splitlines()
row_idx = content.index("interface Ethernet96")
content[row_idx + 1] = "profile users-all"