Baixe o app para aproveitar ainda mais
Prévia do material em texto
27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 1/16 Programação RAD Aula 8: Manipulação de dados em Python INTRODUÇÃO A recuperação da informação sempre foi um assunto interessante na computação. Gravar e ler arquivos de vários formatos são os princípios dos bancos de dados atuais e representam operações muito relevantes em várias aplicações. Nesta aula, estudaremos um pouco mais as strings – tema importante na linguagem Python. A�nal, diversas aplicações relacionadas à ciência de dados, à genética, à bioinformática e a outras tão usadas nessa linguagem baseiam-se, fundamentalmente, em strings e em arquivos-texto. Aqui, exploraremos esses dois assuntos. OBJETIVOS 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 2/16 Criar programas em Python a partir do uso de arquivos. Manipular strings nessa linguagem. 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 3/16 Leitura e escrita de arquivos-texto Basicamente, ler e escrever arquivos signi�ca trabalhar com strings, armazená-las e recuperá-las. Em outras linguagens de programação, é comum usar os métodos (ou as funções) open e write para realizar esses processos. Em Python, não é diferente: empregamos os mesmos comandos, e a forma de trabalhar com eles é bem semelhante, com apenas algumas particularidades que vamos apresentar aqui. Como você já sabe, os arquivos são objetos nessa linguagem. Com base nisso, manipulamos atributos e métodos. Atenção , Para o pleno aproveitamento desta aula, baixe este arquivo-texto (https://www.w3schools.com/js/ajax_info.txt). É bem pequeno e simples, mas su�ciente para realizarmos nossos exemplos. Você pode salvá-lo em qualquer lugar de seu computador, mas guarde bem seu caminho, pois vamos precisar dessa informação daqui a pouco. ABERTURA DE ARQUIVOS Para abrir um arquivo, usamos o comando open(), que recebe dois argumentos: Nome do arquivo Modo de leitura Vamos aprender a fazer isso por meio de exemplos. Para começar, suponha que o arquivo esteja na raiz do drive C de seu computador. Se você estiver usando Linux ou MacOs, salve o arquivo no diretório de seu usuário. Observe: >>> a = open('c:\\Users\\Fabiano\\ajax_info','w') >>> a https://www.w3schools.com/js/ajax_info.txt 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 4/16 <_io.TextIOWrapper name='c:\\Users\\Fabiano\\ajax_info.txt' mode='w' encoding='cp1252'> Se o arquivo está no drive C:\, por que existem duas barras (c:\\)? É simples: porque, em algumas linguagens, a barra invertida (“\”) é usada para sequências de escape. Quando colocamos duas barras invertidas, a linguagem Python entende que estamos, de fato, querendo usar somente uma barra. Assim como em outras linguagens de programação, o primeiro argumento do método open() especi�ca o arquivo que será aberto. Nesse argumento, precisamos informar o path (caminho) completo do arquivo. Voltando ao exemplo, o arquivo “arquivo.txt” foi aberto para escrita e atribuído à variável “a”. Entre os modos usados para ler e escrever em arquivos, destacamos: e Abre o arquivo apenas para leitura (read). Você não pode inserir ou modificar o conteúdo. w Abre o arquivo apenas para escrita. O arquivo que existia será sobrescrito pelo atual. a – append Abre o arquivo para inserção de dados que serão escritos no final do arquivo. r Abre o arquivo para leitura e escrita. Ao abrir o arquivo com o open(), você pode omitir o modo. Nesse caso, o padrão será o modo “r”. Atenção , Sempre que você usar o método open() para abrir um arquivo, já escreva uma linha em seguida para não se esquecer de fechá-lo. Embora o computador tenha bastante memória, e o coletor de lixo do sistema operacional apague logo o arquivo, essa é uma boa prática. Vamos retomar nosso arquivo já aberto. Agora, podemos manipulá-lo para várias �nalidades. A seguir, apresentamos alguns métodos: + 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 5/16 Iterar em um arquivo Em muitas situações, precisamos percorrer o arquivo aberto linha a linha. Isso é chamado de iteração. Para isso, usamos o comando for como de costume. Veja o exemplo abaixo: >>> for linha in a: print(linha) <h1>AJAX</h1> <p>AJAX is not a programming language.</p> <p>AJAX is a technique for accessing web servers from a web page.</p> <p>AJAX stands for Asynchronous JavaScript And XML.</p> Aqui, apenas mostramos a linha na tela. Em programas reais, a linha recuperada pode ser processada de várias formas. Lembra-se dos exercícios relacionados com genética da aula anterior? Poderíamos, por exemplo, calcular a quantidade de bases do DNA em cada linha. Ler todas as linhas de um arquivo A linguagem Python é muito usada em aplicações relacionadas à ciência de dados por inúmeros motivos – entre eles lidar muito bem com arquivos e strings. Em diversas situações, quando o arquivo não é muito grande, podemos carregar todo o conteúdo em uma única variável string. >>> conteudo = a.read() >>> conteudo <h1>AJAX</h1> <p>AJAX is not a programming language.</p> <p>AJAX is a technique for accessing web servers from a web page.</p> 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 6/16 <p>AJAX stands for Asynchronous JavaScript And XML.</p> Todo o conteúdo do arquivo foi transformado em uma única string e atribuído à variável “conteúdo”. Ler todas as linhas em uma lista Em outras situações, é melhor ler o conteúdo em listas. Nesse caso, o método a ser usado é o readlines(). >>> a = open("c:\\users\\fabiano\\ajax_info.txt") >>> lista = a.readlines() >>> lista ['<h1>AJAX<h1>\n', '<p>AJAX is not a programming language.</p>\n', '<p>AJAX is a technique for accessing web servers from a web page.</p>\n', '<p>AJAX stands for Asynchronous JavaScript And XML.</p>'] Observe que todo o conteúdo do arquivo será inserido em uma lista. Após fazer isso, os métodos de procura – como aqueles apresentados nas aulas anteriores – podem ser usados para buscar um valor especí�co ou outro tipo de processamento. Ler o arquivo linha por linha Este é um método bastante utilizado. Muitas vezes, precisamos processar o arquivo linha por linha em vários tipos de aplicações para: • Transformar os caracteres em maiúsculos; • Procurar valores em outro arquivo baseado no conteúdo da linha; • Carregar um aplicativo etc. Para fazer essa leitura minuciosa, usamos o método readline(). 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 7/16 >>> a = open("c:\\users\\fabiano\\ajax_info.txt") >>> lin1 = a.readline() >>> lin2 = a.readline() >>> lin3 = a.readline() >>> lin1 '<h1>AJAX</h1>\n' >>> lin2 '<p>AJAX is not a programming language. </p>\n' >>> lin3 '<p>AJAX is a technique for accessing web servers from a web page.</p>\n' Quando abrimos um arquivo, existe um “ponteiro” que aponta para a posição atual de leitura. Suponha que você acabou de abrir o arquivo com o open(). Nesse momento, o ponteiro estará �xado na posição inicial do arquivo. Com o uso do readline(), o ponteiro vai ler a primeira linha e apontar para a próxima. Em outras palavras, a cada readline(), o ponteiro vai avançar até a posição �nal do arquivo. Normalmente, empregamos o readline() associado a um comando de repetição para percorrer o arquivo todo. Criar um arquivo vazio Apesar de ser traduzido como “abrir”, o método open() pode ser usado para abrir ou criar um arquivo vazio. Para isso, passamos como parâmetro o modo “w”. >>> b = open("c:\\users\\fabiano\\novoarquivo.txt","w") Veri�que na pasta de seu computador que, agora, há um novo arquivo com o tamanho 0 kb (vazio). 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/18/16 Apagar o conteúdo de um arquivo Às vezes, o método open() pode ser perigoso. Quando executamos o comando do exemplo anterior, se houvesse um arquivo com o mesmo nome que passamos por parâmetro, o arquivo seria apagado e se criaria um novo sobre o antigo, deletando seu conteúdo. Portanto, use esse método com cuidado. Escrever em um arquivo-texto A leitura de dados é feita usando o read(). Para escrever em um arquivo-texto, empregamos o método write(). >>> b = open("c:\\users\\fabiano\\novoarquivo.txt","w") >>> b.write("Ouviram do Ipiranga as margens plácidas") 39 >>> c = open("c:\\users\\fabiano\\novoarquivo.txt","r") >>> for linha in c: print(linha) Ouviram do Ipiranga as margens plácidas Adicionar mais conteúdo ao arquivo existente Normalmente, abrimos o arquivo na primeira linha. >>> a = open("c:\\users\\fabiano\\ajax_info.txt") >>> dados = a.readlines() >>> dados 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 9/16 ['<h1>AJAX</h1>\n', '<p>AJAX is not a programming language.</p>\n', '<p>AJAX is a technique for accessing web servers from a web page.</p>\n', '<p>AJAX stands for Asynchronous JavaScript And XML.</p>'] >>> dados.append("<p>Nova linha inserida</p>") >>> a = open("c:\\users\\fabiano\\ajax_info.txt","w") >>> a.writelines(dados) Observe que não passamos o parâmetro do modo. Logo, a linguagem Python assume que é o modo “r”. Atribuímos os dados do arquivo à lista dados. Em seguida, inserimos uma nova linha no arquivo. Abrimos o arquivo em modo de escrita e usamos o método writelines() contendo os dados antes armazenados. O método writelines() é diferente do write() porque aceita uma lista de strings, enquanto o write aceita uma string apenas. Agora que vimos os arquivos, vamos passar para as strings. STRINGS Em qualquer linguagem de programação, as strings são importantes. Até mesmo em Java, em que não são um tipo primitivo, certamente, você encontrará vasta documentação a respeito. Aqui, vamos mostrar algumas operações básicas envolvendo strings em Python. Nessa linguagem, tudo é objeto – inclusive a strings, que deriva da classe str. A seguir, veremos algumas funções relacionadas às strings: Acessar os caracteres da string por seu índice Assim como em outras linguagens, em Python, as strings são arrays de caracteres. Portanto, é possível acessá-los isoladamente por seu índice. >>> str1 = "Nabucodonosor" >>> str1 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 10/16 'Nabucodonosor' [>>> str1[0]] 'N' >>> str1[1] 'a' >>> str[20] Traceback (most recent call last): File "<pyshell#21p>", line 1, in <module> str[20] TypeError: 'type' object is not subscriptable Mas há um detalhe importante: as strings são imutáveis quanto à alteração por índice. Não é possível fazer a seguinte tentativa: >>> str1[0]="F" Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> [str1[0]="F"] TypeError: 'str' object does not support item assignment Observe que o código apresenta uma mensagem de erro. Atenção , Sempre leia as mensagens de erro geradas pela linguagem Python, que mostram a posição exata do problema e podem ajudá-lo muito na construção dos programas. Iterar em strings 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 11/16 Assim como um array ou uma lista, podemos iterar na string com o comando for: >>> for i in str1: print(i) N a b u c o d o n o s o r Você também pode fatiar (slice) a string: >>> str1[0:5] 'Nabuc' >>> str1[:5] ['Nabuc'] >>> str1[5:] 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 12/16 'odonosor' >>> str1[-1] 'r' >>> str1[:] 'Nabucodonosor' Veri�car se um caractere está na string >>> 'f' in str1 False >>> 'n' in str1 True Identi�car o tamanho da string >>> len(str1) 13 Converter a string para maiúsculas ou minúsculas >>> str1.upper() 'NABUCODONOSOR' >>> str1.lower() 'nabucodonosor' 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 13/16 Converter um número para uma string >>> x = 666 >>> type(x) <class 'int'> >>> x1 = str(x) >>> type(x1) <class 'str'> Veri�car se a string contém caracteres não alfabéticos >>> str1.isalpha() True >>> str1="Nabucodonosor123" >>> str1.isalpha() False Retirar espaços em branco no início e no �m da string Este método é muito útil, mas não modi�ca o conteúdo da string: >>> str2 = " Nabucodonosor " >>> str2 ' Nabucodonosor ' 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 14/16 >>> str2.strip() 'Nabucodonosor' Juntar cada item da string por meio de um delimitador especi�cado Assim como o strip(), o método não vai alterar a string: >>> str2 'Nabucodonosor' >>> "-".join(str2) 'N-a-b-u-c-o-d-o-n-o-s-o-r' Existem muitas outras formas de formatar e manipular as strings, bem como de tratar seus caracteres conjunta ou isoladamente. A ideia, aqui, é que você possa, basicamente, usá-las em seus programas e realizar essas tarefas. Mas não deixe de estudar, pesquisar e explorar as possibilidades. EXERCÍCIOS Analise a seguinte string: str = “ Aquarela do Brasil “ Observe que há espaços no início e no �m. Como você faria para retirar, de�nitivamente, os espaços em branco da string str? Resposta Correta Assinale a opção CORRETA: a) Quando abrimos um arquivo para leitura, se não existe, ocorre erro. b) Quando abrimos um arquivo para leitura, se não existe, um novo é criado. c) Quando abrimos um arquivo para escrita, se existe, é sobrescrito com o novo. d) Todas as a�rmações anteriores procedem. e) N.R.A. Justi�cativa 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 15/16 Para ler apenas dois caracteres de um objeto do tipo arquivo (arq), usamos: a) arq.read(2) b) arq.read() c) arq.readline() d) arq.readlines e) arq.open(2) Justi�cativa O método center() centraliza strings em uma sequência de determinada largura. Baseando-se nessa explicação e em nosso breve estudo a respeito do assunto, analise o código a seguir: str='python' print (str.center(15,'*')) O que será impresso? a) ********python******* b) ****python***** c) *****python**** d) ********python******* e) N.R.A. Justi�cativa Analise o código a seguir e observe a aplicação do método count(): str='abababadaadbbaccabc' print (str.count('ab',-17,-1)) O que será impresso? a) 4 b) 2 c)3 d) 5 e) 6 Justi�cativa 27/06/2022 12:33 Disciplina Portal https://estudante.estacio.br/disciplinas/estacio_7100507/temas/8/conteudos/1 16/16 Glossário
Compartilhar