Receita: Acha maior linha em arquivo
Eu precisava de uma função que retornasse, dentro de um arquivo .txt, a maior linha (linha de maior comprimento). Talvez seja útil para mais alguém. Esse código também pode ser facilmente adaptado para retornar qual a maior string dentro de uma lista (só tirar a parte relativa à abertura de arquivo).
Sou capaz de jurar que as linhas 8-14 podem ser reduzidas a 1 linha, só não sei como ainda
Código
1 def achaMaiorLinhaEmArquivo(nome_arquivo):
2 #extrai as linhas do arquivo em uma lista
3 arquivo = file(nome_arquivo)
4 linhas_arquivo = [linha for linha in arquivo]
5 arquivo.close()
6
7 #cria uma lista com o comprimento de cada linha
8 compr_linhas = [len(linha) for linha in linhas_arquivo]
9
10 #acha o maior numero dentro da lista de comprimentos,
11 #ou seja, qual a o comprimento da maior linha
12 compr_maior_linha = reduce(lambda x,y: max(x,y), compr_linhas)
13
14 #retorna todas as linhas que tenham o comprimento da maior linha
15 maior_linha = [linha for linha in linhas_arquivo if len(linha)==compr_maior_linha]
16 return maior_linha
17
18 if __name__ == "__main__":
19 print "\n".join(achaMaiorLinhaEmArquivo("meu_aquivo.txt"))
Volta para CookBook.