2016-09-17 2 views
0

ich eine Eingabedatei habe alsPython: Save Element für Element vom Eingang

0.1 #real number 
0.2 #real number 
Hello #string 
10000 #integer number 

ich sie lesen will folgen und jede Zeile zu verwenden, vor dem Symbol ‚#‘, in meinem Code. Für den zweiten Teil habe ich

with open('input.dat') as f: 
    for line in f: 
     line = line.split('#', 1)[0] 
     line = line.rstrip() 
     print(line) #test print 
f.close() 

In diesem Fall kann ich die Anzahl/string vor dem Symbol ‚#‘, aber was speichern sie lesen und drucken? Zum Beispiel, wenn ich 'Hallo' in einer Zeichenfolge namens 'Name' speichern möchte, '0.1' als eine echte namens 'min' und so weiter. Die einfachste Art, wie ich gefunden, die input.dat Datei zu lesen und die Elemente speichern, wie ich wollen, ist

with open('input.dat') as f: 
    lines = f.readlines() 
f.close() 

min=lines[2] # it print me: "0.1 #real number" 

Aber was ist nur min=0.1, wie kann ich sowohl das Lesen und Speichern von Verfahren erhalten? Ich bin in Python noob, also vielleicht fehlt es mir an Grundlagen.

Vielen Dank

Antwort

1

Sie haben bereits alle Stücke, die Sie gerade sie an den richtigen Stellen setzen müssen:

def remove_comment(line): 
    line = line.split('#', 1)[0] 
    line = line.rstrip() 
    return line 

with open('input.dat') as f: 
    lines = [remove_comment(line) for line in f] 

# no need for this: "with" takes care of it: # f.close() 

min=lines[2] 
1

Eine Möglichkeit, es zu tun, die Ergebnisse in einem Array zu speichern. Was als nächstes zu tun ist, hängt davon ab, wie Ihre Eingabe strukturiert ist: Wird es immer nur vier Werte dieser Typen in dieser Reihenfolge enthalten?

values = [] 
with open('input.dat') as f: 
    for line in f: 
     value = line.split('#', 1)[0] 

     if value.isdigit(): 
      values.append(int(value)) 
     else: 
      try: 
       values.append(float(value)) 
      except ValueError: 
       values.append(value) 

Wenn die Werte immer in dieser Reihenfolge angezeigt werden, können Sie dann so etwas tun:

n_min, n_max, name, big_number = values 

(Anmerkung: versuchen Variablen, da diese min, max oder andere integrierte Schlüsselwörter zu vermeiden Namensgebung könnte später zu Problemen führen)

Verwandte Themen