gpt4 book ai didi

python - 替换文件中行的代码是重复行

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:03 28 4
gpt4 key购买 nike

我正在尝试替换文件中的几行。这是我的示例文件:

input a1;
//Power_off assertion for all power ports (1 per each power domain)
// `assert_Check1
//Start of functional specification here
// always @* reg_z4=Check

这是我编写的用于替换行的 python 代码:

import re,sys,fileinput

for line in fileinput.input(sys.argv[1], inplace=True):
assertPattern=re.match(r'\/\/\s(`assert_.+\)$)',line, re.M)
alwaysPattern=re.match(r'^\/\/\s(always\s@\*.+\;$)',line, re.M)
print (line.rstrip().replace('//Power_off assertion for all power ports (1 per each power domain)', '`ifdef assert_stdcell\n\n//Power_off assertion for all power ports (1 per each power domain)'),)
if assertPattern:
print (line.rstrip().replace(assertPattern.group(),assertPattern.group(1)))
print (line.rstrip().replace('//Start of functional specification here','`endif\n\n//Start of functional specification here'),)
if alwaysPattern:
print (line.rstrip().replace(alwaysPattern.group(),alwaysPattern.group(1)),)

这段代码可以很好地完成一些替换。但是,该代码复制了文件中的所有行。此外,alwaysPattern 和assertPattern 替换不起作用。这是代码的输出:

input a1;
input a1;
`ifdef assert_stdcell

//Power_off assertion for all power ports (1 per each power domain)
//Power_off assertion for all power ports (1 per each power domain)
// `assert_Check1
// `assert_Check1
//Start of functional specification here
`endif

//Start of functional specification here
// always @* reg_z4=Check
// always @* reg_z4=Check

知道为什么会发生重复吗?为什么模式替换不起作用?

最佳答案

发生重复是因为您必须在 if 之外打印语句。因此,您总是会将该行打印两次,此外,如果您的任何正则表达式匹配(它们不匹配),您将再次打印该行。

关于python - 替换文件中行的代码是重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com