在文件中,我有以下几行
NetConn_msa[0].time=0.0
NetConn_msa[1].time=0.0 etc for 60 elements.
我需要编写一个脚本来将时间从0.0更改为0.5。
我从st.replace("delay=0.0","delay=0.05")
开始,然后尝试找到要替换的字符串
sub=re.compile("\[\d+\]\.\w+=[0]\.[0]")
result=sub.search(st)
有人可以帮助我,因为我对编程很新。 谢谢!
答案 0 :(得分:2)
为什么不这么做呢:手动编辑文件,以便将违规的60行替换为:
for x in range(60):
NetConn_msa[x].time = 0.5
答案 1 :(得分:1)
脚本:
import re
x = """NetConn_msa[0].time=0.0
NetConn_msa[59].time=0.0
NetConn_msa[0].time=9.9
NetConn_msa[60].time=0.0
NetConn_msa[61].time=0.0
NetConn_msa[99].time=0.0
NetConn_msa[100].time=0.0
NetConn_msa[0].other=0.0
NetConn_msa[0].time=0.01
PseudoNetConn_msa[59].time=0.0
Foo[0].bar=0.0"""
print "=== not strict enough ==="
print re.sub("(\]\.\w+)=0.0","\\1=0.5",x)
print "=== stricter ==="
print re.sub(r"(NetConn_msa\[[1-5]?\d\]\.time)=0.0\b", r"\1=0.5", x)
输出:
=== not strict enough ===
NetConn_msa[0].time=0.5
NetConn_msa[59].time=0.5
NetConn_msa[0].time=9.9
NetConn_msa[60].time=0.5
NetConn_msa[61].time=0.5
NetConn_msa[99].time=0.5
NetConn_msa[100].time=0.5
NetConn_msa[0].other=0.5
NetConn_msa[0].time=0.51
PseudoNetConn_msa[59].time=0.5
Foo[0].bar=0.5
=== stricter ===
NetConn_msa[0].time=0.5
NetConn_msa[59].time=0.5
NetConn_msa[0].time=9.9
NetConn_msa[60].time=0.0
NetConn_msa[61].time=0.0
NetConn_msa[99].time=0.0
NetConn_msa[100].time=0.0
NetConn_msa[0].other=0.0
NetConn_msa[0].time=0.01
PseudoNetConn_msa[59].time=0.0
Foo[0].bar=0.0
答案 2 :(得分:0)
x = """NetConn_msa[0].time=0.0
NetConn_msa[1].time=0.0 etc for 60 elements. """
print re.sub("(\]\.\w+)=0.0","\\1=0.5",x)
#NetConn_msa[0].time=0.5
#NetConn_msa[1].time=0.5 etc for 60 elements.
答案 3 :(得分:0)
为什么不这么简单呢?
st.replace( '时间= 0.0 \ n', '时间= 0.5 \ N')