Study day #49


Olá a todos, hoje queria falar de um caso específico de Python muito interessante. Imaginemos que temos um ficheiro em formato TXT com uma lista de nomes. Agora temos no Python uma lista com apenas 4 nomes escolhidos (Sérgio, Ines, Beatriz e Henrique). O que temos de fazer será criar uma nova lista com apenas os nomes comuns. Para isso será necessário criar um script que abra o ficheiro em Python, compare ambas as listagens e depois devolva o resultado final.


Primeira coisa a fazer será então criar uma nova lista vazia ('ambos') onde o resultado final será guardado:


ambos = []


Depois, abrimos o ficheiro e no mesmo script atribuimos uma variável ('todos_nomes') ao conjunto de todas as linhas do ficheiro TXT(nomes.txt):


with open('nomes.txt','r') as nomes:

    todos_nomes = nomes.readlines()


Assim ficamos com uma lista que terá dentro todas as linhas do nosso ficheiro TXT original:


['Sergio\n',

 'Ines\n',

 'Beatriz\n',

 'Henrique\n',

 'Francisco\n',

 'Graca\n',

 'Miguel\n',

 'Jorge\n',

 'Iris\n',

 'Margaux\n']


O problema é que como no ficheiro original existem quebras de linhas, estas no Python aparecem como '\n' que significa precisamente quebra de linha. Assim não é possível compararmos os nomes convenientemente portanto o que vamos fazer a seguir é cortar em cada elemento essa quebra de linha:


todos_nomes = [ word.strip('\n')             for word in todos_nomes ]


Vamos abrir a nossa lista todos_nomes e dizemos que para cada elemento (for word in todos_nomes) vamos retirar a porção da quebra de linha (word.strip('\n').

Isto irá transformar a nossa lista em algo mais agradável:


['Sergio',

 'Ines',

 'Beatriz',

 'Henrique',

 'Francisco',

 'Graca',

 'Miguel',

 'Jorge',

 'Iris',

 'Margaux']


Assim já podemos comparar ambas e juntar os elementos comuns à nossa lista "ambos":


ambos = [ word  for word in todos_nomes if word in selec]


Dizemos que para cada elemento da lista "todos_nomes", se esse elemento estiver na nossa lista "selec" (a tal que tinha os elementos que queríamos ver se eram comuns) vamos adicioná-lo ao nosso resultado final.


Finalmente, executado esse código podemos verificar que os elementos comuns já estão na lista "ambos":


['Sergio', 'Ines', 'Beatriz', 'Henrique']




Comentários

Mensagens populares deste blogue

Python - Gerador de nomes aleatórios: V2.0

Python - Jogo de adivinhar números !