2016-12-03 2 views
0

Ich habe eine Bestandsdatei wie unten.Wie ersetzt man einen Wert in der Zeile der Textdatei Python

Mo, M, 15,

Jen, F, 14

Ich brauche eine Variable in dieser Textdatei so meinen Code zu ersetzen, findet wie unten, die Linie, die ich brauche zu ändern, dann legt diese Zeilenwerte in eine Liste. Ich versuche zu ersetzen, aber es funktioniert nicht und aus irgendeinem Grund löscht meine ganze Datei.

Wie setze ich den Wert zum Beispiel ändern Mo Alter 20?

Mein Code ist so etwas wie unten:

newAge = "20" 

with open("file.txt") as f: 
    for line in f: 
     if "Mo" in line: 
      list = line.split() 
      replace = list.replace(list[2]""this is value of age 15"", newAge) 

Jede Hilfe dank geschätzt wird.

+0

@AhsanulHaque: Es ist möglich, ein Wort in einer Textdatei mit einem anderen Wort zu ersetzen * der gleichen Größe * (gespeicherter Text). Wenn wir davon ausgehen können, dass alle Altersgruppen in zwei aufeinanderfolgenden Dezimalziffern angezeigt werden, ist eine Änderung des Alters möglich. Das bedeutet, dass keine Hundertjährigen und Kinder Alter wie 09 brauchen, aber es ist möglich. Das erfordert mehr Raffinesse als das OP gezeigt hat. –

+1

Wenn Sie sagen, dass Sie nicht über den eigentlichen Code verfügen, müssen Sie warten, bis der Code vor Ihnen steht, bevor Sie nachfragen. –

Antwort

0

diesen Code Versuchen Sie es soll die Arbeit machen:

newAge = "20" 
result = "" 
with open("file.txt") as f: 
    for line in f: 
     if line.lower().startswith("mo,"): 
      list = line.split(', ') 
      list[2] = str(newAge) 
      line = ", ".join(list) 
     result += line + '\n' 
f = open("file.txt", 'w') # should be in 'wt or 'w' mode 
f.write(result) 
f.close() 
+0

Das macht meine Datei wie ['M, o ,,,, M ,,,, 1,5 ,,'] Warum ist das und wie repariere ich es? –

+0

Entschuldigung für die Verzögerung, Sie müssen Ihre Zeile mit dem Trennwert, der "," ist teilen –

1

Sie Ihr Ergebnis in einer neuen Datei speichern können wie folgt:

new_age = '20' 

with open('new_file.txt', 'w') as new_file: 
    with open('file.txt', 'r') as f: 
     lines = f.readlines() 
     for line in lines: 
      if 'Mo' in line: 
       new_file.write(line.replace(line.split(',')[2], ' ' + new_age)) 
      else: 
       new_file.write(line) 

Erläuterung:

Für jede Zeile in der alten Datei, wenn Mo dann vorhanden ist, wir die Linie geteilt und ersetzen der 3. Punkt mit new_age in der neuen Datei, sonst schreiben wir einfach die Zeile ohne Änderung.

Verwandte Themen