新手python - 在数组中替换

时间:2011-05-02 20:49:02

标签: python regex

在文件中,我有以下几行

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)

有人可以帮助我,因为我对编程很新。 谢谢!

4 个答案:

答案 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')