Whitespaces & fileinput

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
recnice
User
Beiträge: 45
Registriert: Sonntag 20. März 2011, 12:10

Hallo,

ich möchte folgendes gerne machen:

Ich habe ein Datei mit folgendem Inhalt:
  • la la le lu
    python nervt
    c++ ist klasse
Mein Programm soll nun in der Datei "python" in "fortran" ändern und dies in die selbe Datei reinschreiben.
Mein Code sieht folgendermaßen aus:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import fileinput,sys,re

input_file = "test_file.dat"

for lines in fileinput.FileInput(input_file, inplace=1):
  lines = lines.replace("python","fortran")
  print lines 
Das Programm ändert beiden Wörter, fügt jedoch whitespaces nach jeder Zeile an:
  • la la le lu

    fortran nervt

    c++ ist klasse

    la la lu
Weiß jemand wie ich das vermeiden kann?

Gruß
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Das passiert weil print immer einen Zeilenumbruch mit ausgibt. Da jede Zeile aber selbst einen enthält macht das dann zwei. Hänge ein Komma hinter das print um das zu verhindern.

Code: Alles auswählen

print lines,
recnice
User
Beiträge: 45
Registriert: Sonntag 20. März 2011, 12:10

Spitze!!
Vielen Dank :D
BlackJack

@recnice: Der Name `lines` ist irreführend, da es sich nur um *eine* Zeile handelt, die an den Namen gebunden wird. Und anstelle der 1 beim `FileInput`, wäre es verständlicher wenn man dort `True` übergibt. `input_file` sollte eher `input_filename` heissen.
Antworten