Use Python para selecionar linhas com um determinado intervalo de valores em uma coluna
Eu sei que isso é simples, mas eu sou um novo usuário para Python, então estou tendo um pouco de dificuldade aqui. Eu estou usando o Python 3 pelo caminho.
Eu tenho vários arquivos que se parecem com isso:
NOME DATA 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>
(Finja que isso é delimitado por tabulações. Devo acrescentar que o arquivo real terá cerca de 3.000 linhas e 17-18 colunas)
O que eu quero fazer é selecionar todas as linhas que tenham um valor na coluna de idade menor que 23.
Neste exemplo, a saída seria:
<code>Name Date Age Sex Color Alex Apr 22.3 F Green Ann Jun 15.7 F Blue </code>
Aqui está o que eu tentei fazer:
<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>
Agora, idealmente, eu tenho 20-30 desses arquivos de entrada "addressbook" e eu queria que este script passasse por todos eles e adicionasse todas as entradas com menos de 23 anos ao mesmo arquivo de saída ("college_age.txt"). Eu realmente não preciso manter as outras linhas, mas não sei mais o que fazer com elas.
Esse script, quando eu o executo, gera um erro.
<code>AttributeError: 'list' object has no attribute 'split' </code>
Então eu mudo a terceira linha para:
<code>file_data=[line.split("\t") for line in f.readlines()] </code>
E isso não me causa mais um erro, mas simplesmente não faz nada. Apenas começa e depois começa.
Qualquer ajuda? :) Lembre-se que sou burro com o Python.
Eu deveria ter acrescentado que meus dados reais têm decimais e não são inteiros. Eu editei os dados acima para refletir isso.