Użyj Pythona, aby wybrać wiersze o określonym zakresie wartości w jednej kolumnie
Wiem, że to proste, ale jestem nowym użytkownikiem Pythona, więc mam tutaj trochę problemów. Swoją drogą używam Pythona 3.
Mam wiele plików, które wyglądają mniej więcej tak:
NAZWA DATA WIEK KOLOR SEKSU
Name Date Age Sex Color
Ray May 25.1 M Gray
Alex Apr 22.3 F Green
Ann Jun 15.7 F Blue
(Udawaj, że jest to rozdzielone tabulatorami. Powinienem dodać, że prawdziwy plik będzie miał około 3000 wierszy i 17-18 kolumn)
Chcę wybrać wszystkie wiersze, które mają wartość w kolumnie wieku, która jest mniejsza niż 23.
W tym przykładzie dane wyjściowe będą następujące:
Name Date Age Sex Color
Alex Apr 22.3 F Green
Ann Jun 15.7 F Blue
Oto, co próbowałem zrobić:
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)
Teraz, najlepiej, mam 20-30 plików wejściowych „książki adresowej” i chciałem, aby ten skrypt przechodził przez wszystkie i dodawał wszystkie wpisy o wieku poniżej 23 lat do tego samego pliku wyjściowego („college_age.txt”). Naprawdę nie muszę trzymać innych linii, ale nie wiedziałem, co z nimi zrobić.
Ten skrypt, gdy go uruchomię, generuje błąd.
AttributeError: 'list' object has no attribute 'split'
Następnie zmieniam trzecią linię na:
file_data=[line.split("\t") for line in f.readlines()]
I nie daje mi już błędu, ale po prostu nic nie robi. Po prostu się zaczyna i zaczyna.
Jakaś pomoc? :) Pamiętaj, że jestem głupi w Pythonie.
Powinienem dodać, że moje rzeczywiste dane mają liczby dziesiętne i nie są liczbami całkowitymi. Zmodyfikowałem powyższe dane, aby to odzwierciedlić.