Nur jede dritte Zeile einlesen

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.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nochmal /me's Punkt: `line` ist immer ein String und da ein String in Python immer aus Strings besteht, ist auch `line[24]` immer ein String. Darum kannst du dir Zeile 5&6 sparen.

Wenn dir die Fehlermeldung tatsaechlich nichts sagt, dann ueberleg mal wie man beschreibt, was in `b` geschrieben wird ;)
Kahnbein.Kai
User
Beiträge: 104
Registriert: Mittwoch 24. Juni 2015, 14:12
Wohnort: Bochum

Ha es hat geklappt.
Danke Leute für eure geduldige Hilfe und Erklärungen.

Im 2.Semester hatte ich Phyton im Studium, ich werde die Vorlesungen incl. Übungen nochmal durcharbeiten und dann darauf aufbauen.


Gruß und einen schönen Abend noch


Kai

Hier ist noch der fertige Code

Code: Alles auswählen

a=open("HALL_GES.txt","r")
b=open("HALL_GESB.txt","w")
 

for line in a:
    c="D" in line
    if c is True:
        b.write(line)
b.close()
a.close()
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Kahnbein.Kai hat geschrieben:

Code: Alles auswählen

    c="D" in line
    if c is True:
        b.write(line)
Das kann man jetzt noch schöner schreiben.

Code: Alles auswählen

    if "D" in line:
        b.write(line)
Benutzeravatar
pillmuncher
User
Beiträge: 1485
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Übrigens heißt es Python, nicht Phyton.
In specifications, Murphy's Law supersedes Ohm's.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

Hallo,

damit müsste es mit jeder dritten Zeile funktionieren:

Code: Alles auswählen

        fin = open('test_Q.txt', 'r')
        fout = open('test_Z.txt', 'w')
        z = -1
        while 1:
            zeile = fin.readline()
            if zeile == "":
                break
            z += 1
            if z % 3 == 0:
                fout.write(zeile)
        fin.close
        fout.close()
MfG, kodela
Zuletzt geändert von kodela am Freitag 23. Oktober 2015, 15:25, insgesamt 1-mal geändert.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@kodela
Lies Dir den gesamten Thread mal durch, da sind bessere Lösungen dabei.... :wink:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

@mutetella

ja, ich habe mir schon alles durchgelesen, aber als blutiger Anfänger, der sich erst seit zwei Wochen mit Python beschäftigt, wusste ich nicht, dass zum Code von BlackJack noch eine Importanweisung gehört. Hätte er diese dazugeschrieben (from itertools import islice), dann hätte ich seinen Code erfolgreich testen können und mich nicht nach einer anderen Lösung bemühen müssen. Macht aber nichts, habe jetzt eben etwas dazu gelernt.

MfG, kodela

PS: Wie sieht es übrigens für den Code von BlackJack mit dem Schließen der Dateien aus?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Anders als bei dir, werden seine Dateien geschlossen ;) In Zeile 11 fehlen Klammern und generell solltest du Dateien nicht explizit schliessen, sondern, wie bei BlackJack, das `with` Statement benutzen.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

@mutetella

Die fehlenden Klammern habe ich bei mir schon entdeckt und hinzugefügt. Hier kann ich das leider nicht mehr machen.

Zum Schließen habe ich aber noch eine Frage. Ist es richtig, wenn ich aus Deinen Worten entnehme, dass immer dann, wenn eine Datei über das "with"-Statement geöffnet wird, die Datei automatisch geschlossen wird, sobald kein Zugriff mehr getätigt wird?

MfG, kodela
Zuletzt geändert von kodela am Freitag 23. Oktober 2015, 23:25, insgesamt 1-mal geändert.
BlackJack

@kodela: Sobald der Programmfluss den ``with``-Block verlässt — egal aus welchen Gründen.
kodela
User
Beiträge: 185
Registriert: Montag 12. Oktober 2015, 21:24
Wohnort: Landsberg am Lech
Kontaktdaten:

@BlackJack

Danke!
Antworten