Problem mit readline(), nimmt nur jede 2, Zeile!

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
pytor
User
Beiträge: 4
Registriert: Donnerstag 21. Juli 2011, 12:59

Hallo,
Ich habe ein Problem mit der readline() Funktion. Ich habe den Eindruck, sie liest und verarbeitet nur jede 2. Zeile!
kann das sein ? und wie kann ich das Problem lösen? Gibt es ein Problem mit dem Zeilen-Endezeichen?

Hier etwas Code:

Code: Alles auswählen

    with fi as inf:
        for line in inf:
            line = inf.readline()
        
            regex1 = '20226110'
            regex2 = '20227110'
            regex3 = '20228110'
            regex4 = '20334110'
            if re.search(regex1, line):
                fo_1.write(line)
                continue
            elif re.search(regex2, line):
                fo_2.write(line)
                continue
            elif re.search(regex3, line):
                fo_3.write(line)
                continue
            elif re.search(regex4,line):
                fo_4.write(line)
                continue
            
Danke für Hinweise! und bringt das with as statement hier überhaupt was?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

pytor hat geschrieben:Hallo,
Ich habe ein Problem mit der readline() Funktion. Ich habe den Eindruck, sie liest und verarbeitet nur jede 2. Zeile!
kann das sein ? und wie kann ich das Problem lösen? Gibt es ein Problem mit dem Zeilen-Endezeichen?

Hier etwas Code:

Code: Alles auswählen

    with fi as inf:
        for line in inf:
            line = inf.readline()
        
            
Danke für Hinweise! und bringt das with as statement hier überhaupt was?
Was soll das with denn hier bewirken?

Der ganze Code sieht komisch aus. Wenn fi eine Referenz auf eine zu Lesen geöffnete Datei ist, dann läufst du mit for line in inf doch bereits zeilenweise über die Datei. Das readline() stört dann einfach nur, bzw. sorgt dafür, dass jeweils eine Zeile übersprungen wird.

Und zum Abschluss: Was sollen die continue-Anweisungen bewirken?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Und natürlich die durchnummerierten Namen. Wenn du so etwas hast, dann solltest du Tupel, Listen oder Dictionaries verwenden. `regex`, `fo_` `fi` und `inf` sind außerdem vollkommen nichtssagende Namen, bei den du in drei Wochen selber schon nicht mehr deren Bedeutung kennst.

Sebastian
Das Leben ist wie ein Tennisball.
BlackJack

@pytor: Zusätzlich zu meinen Vorrednern: Die regulären Ausdrücke sind gar keine beziehungsweise so trivial das man hier kein regulären Ausdrücke für bemühen muss. Ob eine Zeichenkette in einer anderen vorkommt, kann man ganz einfach mit dem ``in``-Operator testen.

Die ``with``-Anweisung sorgt dafür, dass die Datei am Ende des Blocks geschlossen wird, aber es ist eher ungewöhnlich das dort nicht das `open()` steht mit die Datei geöffnet und das Datei-Objekt erstellt wird.
pytor
User
Beiträge: 4
Registriert: Donnerstag 21. Juli 2011, 12:59

Hallo,

ich bedanke mich für die schnelle Hilfe, leider erst jetzt.
Habe aber alle Hinweise übernommen.

@/me: danke für die Klarheit. und continue, weiß ich immer noch nicht wann das Sinn macht?
@EyDu: stimmt habe die Namen etwas verdeutlicht.
@BlackJack: auch danke für die Klarheit, in Sachen with as. ab wann müssen reguläre Ausdrücke eingesetzt werden, kann man das pauschal beantworten?


Also vielen Dank
senft
User
Beiträge: 25
Registriert: Montag 31. März 2008, 14:47

pytor hat geschrieben:ab wann müssen reguläre Ausdrücke eingesetzt werden, kann man das pauschal beantworten?
Wenn man eben nicht mehr mit Bordmitteln auskommt.
Grüße
Antworten