如何用python将新的修改行替换为包含某些字符串的行?

时间:2016-03-11 14:38:16

标签: python string

我的意见是:

*PART, NAME=Part-Default
**
****************************** N O D E S *********************************
*NODE, NSET=ALLNODES
   1,    2.228570e-02,   -8.715290e-01
   2,    1.463382e-02,   -9.181792e-01
*INSTANCE, NAME=Part-Default_1, PART=Part-Default
*END INSTANCE

我想用Part-1替换Part-Default或Part-Default_1的所有字段。

输出应为:

*PART, NAME=Part-1
**
****************************** N O D E S *********************************
*NODE, NSET=ALLNODES
   1,    2.228570e-02,   -8.715290e-01
   2,    1.463382e-02,   -9.181792e-01
*INSTANCE, NAME=Part-1, PART=Part-1
*END INSTANCE

我建议:

lines = f.readlines()
i=0
while (i<len(lines)):
    temp=lines[i].strip().split(',')
    if (temp[1]=="NAME=Part-Default"):
        f.write(""temp"\n")
        temp[1]="NAME=Part-1"
    if (temp[1]=="NAME=Part-1_1"):
        temp[1]="NAME=Part-1"
        f.write(""temp"\n")
    if (temp[2]=="NAME=Part-Default"):
        temp[1]="NAME=Part-1"
        f.write(""temp"\n")
    else
        f.write(""temp"\n")

我不确定写命令。可能是我们可以以某种方式直接替换字符串。 问候

2 个答案:

答案 0 :(得分:1)

您可以在整个文件上运行正则表达式替换。除非您正在处理真正庞大的文件,否则您不需要逐行执行此操作。

import re

filename = "xxx.txt"
with open(filename, "r") as f:
    content = f.read()
new_content = re.sub(r"(\w+)=Part-(1(_1)?|Default(_1)?)", r"\1=Part-1", content)
with open(filename, "w") as f:
    f.write(new_content)

答案 1 :(得分:0)

lines = f.readlines()
for line in lines:
    line.replace("Part-Default_1", "Part-1").replace("Part-Default", "Part-1")

这将取代Part-Default_1的任何实例。如果你想更具体,那么你可以使用类似的东西:

lines = f.readlines()
for line in lines:
    if line.find("$QUALIFIER"):
        line.replace("Part-Default_1", "Part-1").replace("Part-Default", "Part-1")

请务必将$ QUALIFER更改为符合您要完成替换的行的内容。