Seite 1 von 1

Zeilenumbruch löschen

Verfasst: Dienstag 7. August 2007, 11:10
von madthomas
Hallo

Hab folgendes Problem.
Ich öffne eine Datei und lese Zeile für Zeile ein.
Überprüfe dann die Zeile nach inhalt, wenn das was ich suche drin ist soll er überprüfen ob die Zeile mit einem Argument endet, wenn nicht soll er den Zeilenumbruch löschen und die nächste Zeile dran hängen

Öffnen und suchen klappt.

Code: Alles auswählen

pfad = "c:/Dokumente und Einstellungen/xxxx/python/" 
dateiname="xxxx.txt"
datei = pfad+dateiname
in_file = open(datei,"r")

for zeile in in_file.readlines():
    print zeile
    if zeile.find("ABC")!=-1 and zeile.find("ende")!=-1:
       print "HHHHIIIIEEEERRRRR"
   elif zeile.find("ABC")!=-1:
       #nächste Zeilen dran hängen bis "ende"vorhanden
   else
       #mach nichts
in_file.close()

Verfasst: Dienstag 7. August 2007, 12:54
von mawe
Ein paar Gedanken:

* Um über die Zeilen einer Datei zu iterieren, reicht

Code: Alles auswählen

for zeile in in_file:
* Ist "ABC" in der Zeile:

Code: Alles auswählen

if "ABC" in zeile
* Endet die Zeile mit "ende":

Code: Alles auswählen

if zeile.endswith("ende")
* Newline löschen:

Code: Alles auswählen

zeile.strip()

Verfasst: Dienstag 7. August 2007, 13:34
von madthomas
Was mich jetzt noch wundert warum der nach jeder Zeile die er einliest noch ein extra Zeilenumbruch macht.

Die Datei sieht etwa so aus

123123123
132123123
123123123
123123123

und so gibt er sie mir aus

123123123

123123123

123123123

123123123

ohne zeile.strip()

Verfasst: Dienstag 7. August 2007, 13:45
von schlangenbeschwörer
Ein "\n" steht in der zu printenden Zeile und eins wird von print drangehängt.

Code: Alles auswählen

print "wasauchimmer",
Mit nem Komma wird kein "\n" angehängt.

Verfasst: Dienstag 7. August 2007, 13:51
von madthomas
DANKE

Verfasst: Dienstag 7. August 2007, 13:59
von Miko
hm das mit dem komma ist wirklich praktisch danke!

Verfasst: Dienstag 7. August 2007, 14:33
von nkoehring
mit kommas konkatenierst du Strings bei der Ausgabe...

also:

Code: Alles auswählen

print "ich lese ein...\t",
(einlesen() and ausgeben("fertig!") or ausgeben("fehlgeschlagen :(")
...ja bloedes beispiel... ich mag dieses and/or-zeugs... dummerweise kann man dann nicht print verwenden, sondern brauch eine funktion, die was zurueckgibt:

Code: Alles auswählen

def ausgeben(s):
    print s
    return True