Seite 1 von 1

Jede vierte Zeile eines eingelesenen Dokuments ausgeben

Verfasst: Freitag 20. Juli 2012, 12:56
von Splinter479
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

Re: Jede vierte Zeile eines eingelesenen Dokuments ausgeben

Verfasst: Freitag 20. Juli 2012, 12:57
von 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

Re: Jede vierte Zeile eines eingelesenen Dokuments ausgeben

Verfasst: Freitag 20. Juli 2012, 13:14
von JonasR
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

Re: Jede vierte Zeile eines eingelesenen Dokuments ausgeben

Verfasst: Freitag 20. Juli 2012, 13:27
von EyDu
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

Re: Jede vierte Zeile eines eingelesenen Dokuments ausgeben

Verfasst: Freitag 20. Juli 2012, 13:33
von JonasR
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.