2016-08-25 3 views
0

Ich möchte eine Textdatei mit Python lesen und bestimmte Zeilen ausdrucken. Das Problem ist, dass ich eine Zeile ausgeben möchte, die mit dem Wort "nominal" beginnt (und ich weiß, wie es geht) und die Zeile dahinter, die durch eine bestimmte Zeichenfolge nicht erkennbar ist. Können Sie mich auf einige Codezeilen verweisen, die das können?Python, wählen Sie eine bestimmte Zeile

+7

zeigen Sie uns Ihren Code so weit, was haben Sie versucht – depperm

+4

Es sieht aus wie Sie wollen, dass wir etwas Code für Sie schreiben. Während viele Benutzer bereit sind, Code für einen in Not geratenen Coder zu produzieren, helfen sie normalerweise nur, wenn das Poster bereits versucht hat, das Problem selbst zu lösen. Eine gute Möglichkeit, diesen Aufwand zu demonstrieren, besteht darin, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Konsolenausgabe, Tracebacks usw.), einzuschließen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Überprüfen Sie die [FAQ] und [fragen]. –

+0

> Können Sie mich auf einige Codezeilen verweisen, die das können? myaut

Antwort

0

In gutem Glauben und unter der Annahme, dass diese Sie Codierung und zeigt einige Mühe beginnen zu helfen, hier gehen Sie:

file_to_read = r'myfile.txt' 

with open(file_to_read, 'r') as f_in: 
    flag = False 
    for line in f_in: 
     if line.startswith('nominal'): 
      print(line) 
      flag = True 
     elif flag: 
      print(line) 
      flag = False 

es könnte the-box-out-of-Arbeit, aber bitte versuchen Sie es einige verbringen Zeit durchläuft und Sie werden definitiv die Logik dahinter bekommen. Beachten Sie, dass beim Textvergleich in python die Groß-/Kleinschreibung beachtet wird.

0

Wenn die Datei nicht zu groß ist, können Sie alles in einer Liste gesetzt:

def printLines(fname): 
    with open(fname) as f: 
     lines = f.read().split('\n') 
     if len(lines) == 0: return None 
     if lines[0].startswith('Nominal'): print(lines[0]) 
     for i, line in enumerate(lines[1:]): 
      if lines[i-1].startswith('Nominal') or line.startswith('Nominal'): 
       print(line) 

Dann z.B. printLines('test.txt') wird tun, was Sie wollen.

Verwandte Themen