Verwenden Sie Python, um Zeilen mit einem bestimmten Wertebereich in einer Spalte auszuwählen

Ich weiß, dass dies einfach ist, aber ich bin ein neuer Benutzer von Python, also habe ich hier ein bisschen Ärger. Ich benutze übrigens Python 3.

Ich habe mehrere Dateien, die ungefähr so ​​aussehen:

NAME DATE AGE SEX COLOR

<code>Name Date Age Sex Color
Ray  May  25.1 M  Gray
Alex Apr  22.3 F  Green
Ann  Jun  15.7 F  Blue
</code>

(Stellen Sie sich vor, dies ist tabulatorgetrennt. Ich sollte hinzufügen, dass die echte Datei etwa 3.000 Zeilen und 17-18 Spalten haben wird.)

Was ich tun möchte, ist, alle Zeilen auszuwählen, die einen Wert in der Altersspalte haben, der kleiner als 23 ist.

In diesem Beispiel wäre die Ausgabe:

<code>Name Date Age Sex Color
Alex Apr  22.3 F  Green
Ann  Jun  15.7 F  Blue
</code>

Folgendes habe ich versucht:

<code>f = open("addressbook1.txt",'r')
line = f.readlines()
file_data =[line.split("\t")]
f.close()

for name, date, age, sex, color in file_data:
    if age in line_data < 23:
        g = open("college_age.txt",'a')
        g.write(line)
    else:
        h = open("adult_age.txt",'a')
        h.write(line)
</code>

Jetzt habe ich im Idealfall 20-30 dieser "Adressbuch" -Eingabedateien und wollte, dass dieses Skript sie alle durchläuft und alle Einträge mit einem Alter unter 23 derselben Ausgabedatei ("college_age.txt") hinzufügt. Ich brauche die anderen Zeilen wirklich nicht zu behalten, aber ich wusste nicht, was ich sonst damit anfangen sollte.

Dieses Skript generiert beim Ausführen einen Fehler.

<code>AttributeError: 'list' object has no attribute 'split'
</code>

Dann ändere ich die dritte Zeile auf:

<code>file_data=[line.split("\t") for line in f.readlines()]
</code>

Und es gibt mir keinen Fehler mehr, sondern macht einfach gar nichts. Es fängt einfach an und fängt dann an.

Irgendeine Hilfe? :) Denken Sie daran, ich bin dumm mit Python.

Ich hätte hinzufügen sollen, dass meine tatsächlichen Daten Dezimalzahlen und keine ganzen Zahlen sind. Ich habe die obigen Daten bearbeitet, um dies widerzuspiegeln.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage