删除2个具体字符串之间的行的Python脚本

删除2个具体字符串之间的行的Python脚本,python,Python,我编写了一个脚本,它读取一个文本文件,如下所示 *NODE 100000,1144.,-447.2639,339.0315 100001,1144.,-454.7716,342.956 100003,1144.,-448.2677,343.6241 100004,1144.,-454.8527,338.5432 *ELEMENT, TYPE=C3D6 228888,103103,103111,106773,186164,186165,196339 228889,103111,103232,106

我编写了一个脚本,它读取一个文本文件,如下所示

*NODE
100000,1144.,-447.2639,339.0315
100001,1144.,-454.7716,342.956
100003,1144.,-448.2677,343.6241
100004,1144.,-454.8527,338.5432
*ELEMENT, TYPE=C3D6
228888,103103,103111,106773,186164,186165,196339
228889,103111,103232,106773,186165,186184,196339
228890,106773,106911,106912,196339,196457,196453
只写

228888,103103,103111,106773,186164,186165,196339
228889,103111,103232,106773,186165,186184,196339
228890,106773,106911,106912,196339,196457,196453
但我真的想让它写下来

*ELEMENT, TYPE=C3D6
228888,103103,103111,106773,186164,186165,196339
228889,103111,103232,106773,186165,186184,196339
228890,106773,106911,106912,196339,196457,196453
下面是我写的代码

with open('shell.txt', 'r') as oldfile, open('new_shell.txt', 'w') as newfile:
    for line in oldfile:
        if writing:
            if "*NODE" in line:
                writing = False
            else:
                newfile.write(line)
        elif "*ELEMENT" in line:
            writing = True
newfile.write

您没有写入包含*元素的行。但我建议通常使用regex/一些shell脚本来完成所有这些操作。

在第行中找到“*元素”时,添加一个额外的
写入(行)

# init conditions
writing = False

with open('shell.txt', 'r') as oldfile, open('new_shell.txt', 'w') as newfile:
    for line in oldfile:
        if writing:
            if "*NODE" in line:
                writing = False
            else:
                newfile.write(line)
        elif "*ELEMENT" in line:
            newfile.write(line)
            writing = True

newfile.write

然后您只需要
。在以
“*元素”
开头的行中写入
,当然可以吗?在这种情况下,请使用您的条件句。例如,将
newfile.write(line)
放在条件句末尾的某个地方,然后稍微调整一下代码。只需查看旧文件,直到找到
*元素,然后再编写后面的所有内容。
# init conditions
writing = False

with open('shell.txt', 'r') as oldfile, open('new_shell.txt', 'w') as newfile:
    for line in oldfile:
        if writing:
            if "*NODE" in line:
                writing = False
            else:
                newfile.write(line)
        elif "*ELEMENT" in line:
            newfile.write(line)
            writing = True

newfile.write