Jede vierte Zeile eines eingelesenen Dokuments ausgeben

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
Splinter479
User
Beiträge: 5
Registriert: Freitag 20. Juli 2012, 12:43

Hi,
der Titel ist Programm. Ich habe eine Datei eingelesen und möchte gewisse Informationen rausfiltern. Dazu will ich mir nur bestimmte Zeilen printen, nämlich jede vierte.

Mein Ansatz:

Code: Alles auswählen

fastQobjekt = open("sample_2.txt", "r") 

numlines = 0              
for line in fastQobjekt:        # Zeilen werden gezählt
    numlines += 1               
print numlines                 

linevec = []                                       
for line in range(1, numlines, 4):           # benötigten Zeilen werden im Array gespeichert
    linevec.append(line)                 
print linevec                                     

# Print lines with indice from linevec  ####funktioniert nicht ######
for range i = (0, numlines) in linevec:
    print linevec[i]

fastQobjekt.close()
Sry, ist bestimmt nicht schwer, aber ich steige grad von C++ um und die Schleifensyntax macht
mich noch ein wenig fertig.

Danke,
Splinter
Zuletzt geändert von Anonymous am Freitag 20. Juli 2012, 19:09, insgesamt 2-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
deets

1. Benutz bitte die python-code-tags, sonst kann man nix mehr lesen
2. enumerate ist dein Freund, sowie der modulo-operator:

Code: Alles auswählen

for index, line in enumerate(infile):
      if line % 4:
          continue
      print line
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Wenn man deinen Ansatz von Fehlern befreien würde, käme wohl soetwas dabei raus:

Code: Alles auswählen

for line_num in xrange(0, len(lines), 4):
    print lines[line_num]
Du solltest dich auf jeden Fall noch durch die Doku arbeiten ;)

Edit: Grammatik fix :D
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Jetzt musst du nur noch das Beispiel von JonasR von den unnötigen Indizes befreien ;-)

Code: Alles auswählen

for line in lines[::4]:
    print line
Und wenn die Listen mal etwas größer werden oder man gleich auf dem Dateiobjekt arbeiten möchte:

Code: Alles auswählen

import itertools

with open("...") as fp:
    for line in itertools.islice(fp, None, None, 4):
        print line
Das Leben ist wie ein Tennisball.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

EyDu hat geschrieben:Jetzt musst du nur noch das Beispiel von JonasR von den unnötigen Indizes befreien ;-)

Code: Alles auswählen

for line in lines[::4]:
    print line
Hehe, wusste gar nicht dass es so geht :) Immer wieder schon hier zu lesen.
Antworten