首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换python文件中的字符串

替换python文件中的字符串
EN

Stack Overflow用户
提问于 2016-07-06 14:52:56
回答 1查看 74关注 0票数 1

我的短信是什么

$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

我正在使用的代码

代码语言:javascript
复制
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行,并将标签更改为新的。除了标签行之外,新的输出文本应该有与以前相同的所有行。但这是不恰当的写作。有人能帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-06 15:14:57

除了许多令人毛骨悚然但不重要的问题之外,您正在使用readline()在迭代过程中调用readline(),导致您读取的行不是从文件的开头,而是从fo句柄的当前位置,即包含30411的行之后。您需要再次使用单独的句柄打开输入文件,或者(更好)将最后4行存储在内存中,而不是重新读取需要更改的输入文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38227125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档