我的短信是什么
$TITLE = XXXX YYYY 1 $SUBTITLE= XXXX YYYY 2 $LABEL =第一个标签 3个$DISPLACEMENTS 4美元震级相位输出 5 $SUBCASE ID = 30411
我想要的
$TITLE = XXXX YYYY 1 $SUBTITLE= XXXX YYYY 2 $LABEL =新标签 3个$DISPLACEMENTS 4美元震级相位输出 5 $SUBCASE ID = 30411
我正在使用的代码
import re
fo=open("test5.txt", "r+")
num_lines = sum(1 for line in open('test5.txt'))
count=1
while (count <= num_lines):
line1=fo.readline()
j= line1[17 : 72]
j1=re.findall('\d+', j)
k=map(int,j1)
if (k==[30411]):
count1=count-4
line2=fo.readlines()[count1]
r1=line2[10:72]
r11=str(r1)
r2="new label"
r22=str(r2)
newdata = line2.replace(r11,r22)
f1 = open("output7.txt",'a')
lines=f1.writelines(newdata)
else:
f1 = open("output7.txt",'a')
lines=f1.writelines(line1)
count=count+1问题在于写行。一旦搜索到30411,它就必须返回3行,并将标签更改为新的。除了标签行之外,新的输出文本应该有与以前相同的所有行。但这是不恰当的写作。有人能帮忙吗?
发布于 2016-07-06 15:14:57
除了许多令人毛骨悚然但不重要的问题之外,您正在使用readline()在迭代过程中调用readline(),导致您读取的行不是从文件的开头,而是从fo句柄的当前位置,即包含30411的行之后。您需要再次使用单独的句柄打开输入文件,或者(更好)将最后4行存储在内存中,而不是重新读取需要更改的输入文件。
https://stackoverflow.com/questions/38227125
复制相似问题