2017-10-30 6 views
3

Ich habe zusammen ein Skript setzen gefunden zu entfernen, die wie unten eine Textdatei liest,Python-Skript Linien zwischen zwei Beton Saiten

*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 

und schreibt nur

228888,103103,103111,106773,186164,186165,196339 
228889,103111,103232,106773,186165,186184,196339 
228890,106773,106911,106912,196339,196457,196453 

aber ich will es eigentlich schreiben

*ELEMENT, TYPE=C3D6 
228888,103103,103111,106773,186164,186165,196339 
228889,103111,103232,106773,186165,186184,196339 
228890,106773,106911,106912,196339,196457,196453 

unterhalb der Code, den ich schrieb,

012.351.
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 
+0

Dann müssen Sie nur auf der Zeile, die mit '" ELEMENT "beginnt,' .write 'schreiben, sicher? – jonrsharpe

+0

In Situationen wie diesem spielen Sie mit Ihren Bedingungen. Zum Beispiel, legen Sie 'newfile.write (line)' irgendwo am Ende Ihrer Bedingungen und dann zwicken Sie Ihren Code ein wenig. –

+0

schau einfach in oldfile bis du '* ELEMENT' findest, dann schreibe einfach alles danach. –

Antwort

0

Fügen Sie eine zusätzliche write(line) hinzu, wenn "* ELEMENT" in Zeile gefunden wird.

# 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 
1
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 

Sie haben nicht die Zeile geschrieben, die * ELEMENT enthält. Aber ich würde im Allgemeinen vorschlagen, dies alles mit Regex/ein bisschen Shell-Scripting zu tun.

+0

newfile.write (line) hat funktioniert !! Danke allen! –