Escolar Documentos
Profissional Documentos
Cultura Documentos
Essa aula vai dar uma geral nos vários métodos de manipular uma string, cobrindo coisas de
métodos básicos até expressões regulares em Python. Manipular uma string é uma técnica
que todo programador Python devia se familiarizar.
Métodos de Strings
O jeito mais básico de manipular strings é através de métodos que estão
dentro delas (strings). Podemos fazer um limitado número de tarefas em
strings através desses métodos. Abra sua Python Shell e vamos criar uma
string e brincar um pouco com elas.
>>> len(test)
29
Métodos de Strings
Beleza, agora vamos voltar aos métodos que eu estava falando.Vamos
pegar nossa string e substituir uma palavra usando o
método replace.
>>>test.count('r')
2
Métodos de Strings
Podemos também achar em que posição está certa letra ou palavra.
>>> test.find('r')
18
>>> test[18]
'r'
Métodos de Strings
Separar uma string é uma coisa que eu frequentemente faço. O método split
é usado para isso.
>>>test.split()
['This', 'is', 'just', 'a', 'short', 'string.']
Métodos de Strings
Podemos escolher o ponto a ser separado
>>> test.split('a')
['This is just ', ' short string.']
Métodos de Strings
Para juntar nossa string separada, podemos usar o método join
>>> test.upper()
'THIS IS JUST A SHORT STRING.'
Métodos de Strings
Agora vamos deixar tudo minúsculo
>>> test.lower()
'this is just a short string.'
Métodos de Strings
Vamos deixar apenas a primeira letra maiúscula de uma string minúscula
>>> test.lower().capitalize()
'This is just a short string.'
Métodos de Strings
Podemos usar o método title, que deixa as letras de cada palavra da string
maiúscula.
>>>test.title()
'This Is Just A Short String.'
Métodos de Strings
Uma troca também é possível.O que for maiúsculo vira minúsculo e vice-
versa
>>> test.swapcase()
'tHIS IS JUST A SHORT STRING.'
Métodos de Strings
Podemos rodar alguns testes numa string usando poucos métodos. Vamos
ver se a string dada é totalmente maiúscula.
>>>'UPPER'.isupper()
True
>>> 'UpPEr'.isupper()
False
Métodos de Strings
Do mesmo modo, podemos checar se a string dada é minúscula.
>>> 'lower'.islower()
True
>>> 'Lower'.islower()
False
Métodos de Strings
Checando se ela é um title, no caso, todas as palavras com a primeira letra
maiúscula.
>>> 'aa44'.isalnum()
True
>>> 'a$44'.isalnum()
False
Métodos de Strings
É possível checar se uma string contém apenas letras
>>>'letters'.isalpha()
True
>>> 'letters4'.isalpha()
False
Métodos de Strings
Agora checando se ela contém apenas números.
>>> '306090'.isdigit()
True
>>> '30-60-90 Triangle'.isdigit()
False
Métodos de Strings
Podemos checar se uma string contém apenas espacos.
>>>'A string.'.rjust(15)
' A string.'
Métodos de Strings
O método center é usado para centralizar uma string dentro de espaços.
>>> 'String.'.rjust(15).strip()
'String.'
>>> 'String.'.ljust(15).rstrip()
'String.'
Mais alguns detalhes
• Temos outro exemplo de uma string que contém uma sequência de escape.
A sequência de escape \n significa um caractere de nova linha. Quando ela
aparece em um argumento de string da função print(), a sequência de
escape de nova linha \n inicia uma nova linha:
Mais alguns detalhes
• Função print()
• A função print() é usada para exibir valores na tela. Sua entrada é um objeto
e ela exibe uma representação de string do valor do objeto. (
>>> n = 5
>>> print(n)
5
Saída Formatada
• Função print()
A função print() pode aceitar uma quantidade qualquer de objetos de entrada, não necessariam
ente do mesmo tipo. Os valores dos objetos serão impressos namesma linha e espaços em br
anco (isto é, caracteres ' ') serão inseridos entre eles:
>>> r = 5/3
>>> print(n, r)
5 1.66666666667
>>> nome = 'Ida’
>>> print(n, r, nome)
5 1.66666666667 Ida
Saída Formatada
• Função print()
O espaço em branco inserido entre os valores é simplesmente o separador padrão. Se
quisermos inserir sinais de ponto e vírgula entre os valores, em vez de espaços em branco,
também podemos. A função print() usa um argumento de separação opcional sep, além
dos objetos a serem exibidos:
5;1.66666666667;Ida
O argumento sep=';' especifica que sinais de ponto e vírgula devem ser inseridos para
separar os valores exibidos de n, r e nome.
Saída Formatada
• Função print()
• Função print()
Função print()
A função print() admite outro argumento de formatação, end, além de sep.
Normalmente, cada chamada de função print() sucessiva exibirá em uma linha
separada:
>>> for nome in ['Joe', 'Sam', 'Tim', 'Ann’]:
print(nome)
Joe
Sam
Tim
Ann
Saída Formatada
• Função print()
O motivo para esse comportamento é que, como padrão, a instrução print() acrescenta um
caractere de nova linha (\n) aos argumentos a serem impressos. Suponha que a saída que
realmente queremos é:
Joe! Sam! Tim! Ann!
(Só chamamos nossos bons amigos, e estamos em um tipo de clima exclamativo.) Quando o
argumento end=<alguma string> é acrescentado aos argumentos a serem exibidos, a string
<alguma string> é exibida após todos os argumentos terem sido exibidos. Se o argumento
end=<alguma string> não existir, então a string padrão '\n', o caractere de nova linha, é exibido em
vez disso; isso faz com que a linha atual termine. Assim, para obter a saída de tela no formato que
queremos, precisamos acrescentar o argumento end = '!' à nossa chamada de função print():
>>> for nome in ['Joe', 'Sam', 'Tim', 'Ann']:
print(nome, end='! ')
Joe! Sam! Tim! Ann!
Saída Formatada
• Função print()
Fica evidente que não podemos usar um argumento separador para obter essa
saída. Um modo de consegui-la seria usar a concatenação de strings para
construir uma string no formato correto:
Os objetos a serem impressos (hora, minuto e segundo) são argumentos do método format(). A
string invocando a função format() — ou seja, a string '{0}:{1}:{2}' — é a string de formato: ela
descreve o formato da saída. Todos os caracteres fora das chaves — ou seja, os dois sinais de
dois-pontos (':') — serão exibidos literalmente. As chaves {0}, {1} e {2} são marcadores de lugar,
em que os objetos serão impressos. Os números 0, 1 e 2 indicam explicitamente que os
marcadores de lugar são o primeiro, segundo e terceiro argumentos da chamada de função
format(), respectivamente. Veja uma ilustração na Figura
Saída Formatada
Método de String format()
A Figura a seguir mostra o que acontece quando movemos os índices 0, 1 e 2 no exemplo anterior:
Agora, como podemos obter essa saída? Em nossa primeira tentativa, acrescentamos
um argumento sep à função print() para inserir um número apropriado de espaços entre
os valores impressos em cada linha:
>>> print('i i**2 i**3 2**i')
>>> for i in range(1,13):
print(i, i**2, i**3, 2**i, sep=' ')
A saída que obtemos é:
Saída Formatada
Método de String format()
Embora as primeiras linhas pareçam estar corretas, podemos ver que as entradas
na mesma coluna não estão alinhadas corretamente. O problema é que um
separador de tamanho fixo empurra as entradas mais para a direita quando o
número de dígitos na entrada aumenta. Um separador com tamanho fixo não é a
ferramenta correta para essa tarefa. O modo apropriado de representar uma
coluna de números é fazer com que todos os dígitos de unidade sejam alinhados.
O que precisamos é de uma maneira de fixar a largura de cada coluna de
números e exibir os valores alinhados à direita dentro dessas colunas de largura
fixa. Podemos fazer isso com strings de formato.
Dentro das chaves de uma string de formato, podemos especificar como o valor
mapeado para o marcador de lugar de chave deverá ser apresentado; podemos
especificar sua largura de campo, alinhamento, precisão decimal, tipo e assim por
diante.
Saída Formatada
Método de String format()
Quando a largura do campo for maior que o número de dígitos, o padrão é alinhar
à direita — ou seja, empurrar o valor numérico para a direita. As strings são
alinhadas à esquerda. No próximo exemplo, um campo com largura de 10
caracteres é reservado para cada argumento primeiro e último. Observe que
espaços extras são acrescentados após o valor da string:
>>> '{:8.4}'.format(1000 / 3)
' 333.3'
Compare isso com a saída não formatada:
>>> 1000 / 3
333.3333333333333
Saída Formatada
Método de String format()
>>> '{:8.4}'.format(1000 / 3)
' 333.3'
Compare isso com a saída não formatada:
>>> 1000 / 3
333.3333333333333
Saída Formatada
Método de String format()
Saída Formatada
Método de String format()
>>> '{:6.2f}'.format(5 / 3)
' 1.67'
Nesse exemplo, a especificação de formato ':6.2f' reserva uma largura mínima de
6 com exatamente dois dígitos após o ponto decimal para um valor de ponto
flutuante representado como um número de ponto fixo.
Saída Formatada
Método de String format()
Saída Formatada
Método de String format()
Problema Prático 4.6
Implemente a função rol(), que recebe uma lista contendo informações de estudantes e exibe um
rol, como vemos a seguir. As informações do estudante, consistindo em seu sobrenome, nome,
nível e nota média, serão armazenadas nessa ordem em uma lista. Portanto, a lista de entrada é
uma lista de listas. Cuide para que o rol exibido tenha 10 espaços para cada valor de string e 8
para a nota, incluindo 2 espaços para a parte decimal.
Arquivos
Um arquivo é uma sequência de bytes armazenados em um dispositivo de
memória secundário, como uma unidade de disco. Um arquivo poderia ser um
documento de texto ou uma planilha, um arquivo HTML ou um módulo Python.
Esses arquivos são denominados arquivos de texto. Os arquivos de texto contêm
uma sequência de caracteres que são codificados usando alguma codificação
(ASCII, utf-8 etc.). Um arquivo também pode ser uma aplicação executável (como
python.exe), uma imagem ou um arquivo de áudio. Esses arquivos são
denominados arquivos binários, pois são apenas uma sequência de bytes e não
há codificação.
>>> f.close()
Métodos Read, Write e
Close
• read(num)
– Lê num bytes do arquivo e os retorna numa
string
– Se num não é especificado, todos os bytes desde
o ponto atual até o fim do arquivo são retornados
Métodos Read, Write e
Close
• write(string)
– Escreve string no arquivo
– Devido ao uso de buffers, a escrita pode não ser
feita imediatamente
• Use o método flush() ou close()
para assegurar a escrita física
• close()
– Termina o uso do arquivo para operações de
leitura e escrita
ExemploRead
>>> f = open(‘texto.txt',‘r‘)
>>> ler = f.read()
>>> f.close()
>>> print ler
Ola Mundo!