Cadeias de Caracteres
Jurandy Soares
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
O Tipo Cadeia de Caracteres
• Uma cadeia de caracteres (string em Inglês e str em Python) é uma sequência de caracteres
• O tipo str é associado a variáveis que armazenam cadeias de caracteres
• A tipo str em Python funciona como se fosse um tipo primitivo
• Uma constante de cadeia de caracteres é constituída de um ou mais caracteres separados por aspas simples (') ou duplas(") ou por três aspas simples (''') ou duplas (""")
• As aspas triplas são utilizadas para representar cadeias de caracteres com quebras de linha
Exemplos:
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
escola = 'Instituto Federal do Rio Grande do Norte' estado = "Rio Grande do Norte"
temperatura = '36º C'
cidades_grandes = '''Natal-RN Parnamirim-RN
Mossoró-RN'''
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Variáveis Cadeias de Caracteres
Criar e associar um valor a uma variável do tipo cadeia de caracteres:
saudacoes = "Olá"
Usar a variável como um argumento do tipo cadeia de caracteres em um comando:
print(saudacoes)
faz com que a cadeia Olá! seja exibida na tela
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Indexando Caracteres Dentro de uma Cadeia de Caracteres
• O índice de um caractere em uma cadeia de caracteres é um inteiro que começa com 0 para o primeiro caracter e indica a posição do caracter. Por exemplo:
cadeia = 'Esta é uma cadeia'
E s t a é u m a c a d e i a
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Funções
• Uma função é uma operação com um nome e uma lista de argumentos (possivelmente vazia)
• Uma função pode simplesmente executar uma ação ou ela pode retornar um valor
• A chamada de uma função que não retorna valor é um comando, por exemplo:
print('Olá quem quer que esteja aí!')
A chamada de uma função que retorna um valor é uma expressão, por exemplo:
n = input()
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Métodos
• Um método é uma operação com um nome e uma lista de argumentos (possivelmente vazia) aplicada a um determinado objeto
• A invocação de um método é feita da seguinte maneira:
nomeDoObjeto.nomeDoMetodo(argumentos)
• A invocação de um método pode simplesmente executar uma ação ou ela pode retornar um valor
• A invocação de um método que não retorna valor é um comando, por exemplo:
nomes = []
nomes.append('Maria')
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
A invocação de um método que retorna um valor é uma expressão, por exemplo:
nome = 'maria emília' nome.upper()
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Alguns Métodos para Cadeias de Caracteres
• O tipo str tem muitos métodos que nos permitem manipular valores e variáveis do tipo cadeias de caracteres
• Métodos de str são invocados com a seguinte sintaxe:
varCadeia.nomeMétodo(argumentos)
Exemplos:
# ...
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Função Aplicável a Cadeias de Caracteres
• len
retorna o número de caracteres de uma dada cadeia, por exemplo:
cadeia = 'Esta é uma cadeia' print(len(cadeia))
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Obtenção do Elemento de uma Dada Posição
varCadeia[pos] -> caracter da posição
retorna o caracter na posição pos na cadeia dada, por exemplo:
cadeia = 'Esta é uma cadeia' print(cadeia[0])
print(cadeia[1]) print(cadeia[5]) Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Obtenção do Elemento de uma Dada Posição (cont.)
Lembrando...
E s t a é u m a c a d e i a
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 A posição pode ser dada como um número positivo ou negativo.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Entrada de um Único Caracter
cadeia = input() caracter = cadeia[0]
Nota: De fato, entra-se com uma linha inteira
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Fatiando Cadeias de Caracteres
varCadeia[ini:fim] -> subcadeia
retorna a cadeia que começa na posição ini e termina na posição (fim-1) da cadeia dada.
varCadeia[ini:] -> subcadeia
retorna uma cadeia que começa na posição ini e vai até o último caractere da cadeia dada.
varCadeia[:fim] -> subcadeia
retorna uma cadeia que começa na posição 0 e termina na posição (fim-1) da cadeia dada.
varCadeia[ini:fim:passo] -> subcadeia
retorna uma cadeia que começa na posição ini e termina na posição (fim-1) da cadeia dada, usando passo caracteres.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Observação: ini, fim ou passo podem ser omissos quando os valores padrões forem assumidos: 0, len(varCadeia)-1 e 1, respectivamente.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Exemplo de Fatiamento de Cadeias de Caracteres
cadeia = 'Esta é uma cadeia' print(cadeia[0:4])
print(cadeia[5:7]) print(cadeia[0:16]) nome = 'Juliana Kelly' print(nome[:3])
print(nome[4:]) print(nome[1:6:2]) print(nome[:]) print(nome[::-1])
Qual é a saída do programa acima?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Em Que Posição Encontra-se Subcadeia
varCadeia.index(subcadeia) -> int
retorna a posição da primeira ocorrência de subcadeia na cadeia dada ou apresenta um erro em tempo de execução, caso contrário
varCadeia.find(subcadeia) -> int
retorna a posição da primeira ocorrência de subcadeia na cadeia dada ou -1 se não encontrada, por exemplo:
cadeia = 'Esta é uma cadeia' print(cadeia.index('Esta')) print(cadeia.index(' Esta')) print(cadeia.index('é')) print(cadeia.find(' é')) print(cadeia.find('ou')) print(cadeia.find(' ou'))
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Concatenando (Anexando) Cadeias
O operador + pode ser usado para concatenar valores do tipo cadeia de caracteres, por exemplo:
nome = 'Cíntia'
saudacoes = 'Oi, ' + nome + '!' print(saudacoes)
Atenção ao adicionar números à cadeia. Primeiro é necessário transformá-los em cadeias de caracteres.
nome = 'Cíntia' idade = 15
saudacoes = 'Olá, ' + nome + '! Você tem ' + str(idade) + ' anos' print(saudacoes)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a saída?
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Formatação de Cadeia de Caracteres
varCadeia.format(arg1, arg2, argN) -> str
Devolve uma cadeia de caracteres, substituindo "{0}" pelo valor de arg1, "{1}" pelo valor de arg2 e "{n}" pelo valor de argN, todos convertidos para sua representação como cadeia de caracteres.
Os exemplos acima ficariam da seguinte maneira:
nome = 'Cíntia'
saudacoes = 'Oi, {0}!'.format(nome) print(saudacoes)
nome = 'Cíntia' idade = 15
saudacoes = 'Olá, {0}! Você tem {1} anos'.format(nome, idade)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
print(saudacoes)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Fazendo Mala-Direta com Cadeia de Caracteres
Aquecimento:
>>> convite = '''Olá {0}! Você está convidado(a) ao meu aniversário, que acontecerá no dia 07 de junho, às 21h00, no Hotel Thermas.
(RSVP) Favor confirmar presença!
Abraços,
O aniversariante.
'''
>>> print(convite.format('Manoel'))
Encaixando a ideia acima em um laço:
>>> convidados = 'Fulano', 'Beltrano', 'Cicrano'
>>> for c in convidados:
print(convite.format(c))
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Caracteres de Fuga
Como exibimos a seguinte cadeia?
A palavra 'cobra'
Isto produziria esse resultado?
print('A palavra 'cobra'')
Resposta: Não, isto daria um error de sintaxe -- o compilador veria 'A palavra ' entre o primeiro conjunto de aspas e ficaria confuso pelo que vem depois.
Usa-se a barra invertida, "\", para fugir do significado especial das aspas simples:
print('A palavra \'cobra\'')
# ou
print('A palavra "cobra"')
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Programa cadeiaCaracteres
# Arquivo: cadeiacaracteres.py
saudacao = "Olá turma!"
comprimento = len(saudacao)
print("O comprimento é", comprimento) caracter = saudacao[3]
print("O caracter na posição 3 é", caracter) subcadeia = saudacao[1:3]
print("Subcadeia[1..3] é", subcadeia) indice1 = saudacao.find("lá")
print("O índice de \"lá\" é", indice1) indice2 = saudacao.find("lápis")
print("O índice de \"lápis\" é", indice2)
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Qual é a Saída do Programa CadeiaCaracteres?
• Análise os comandos de cadeiacaracteres e determine a saída produzida pelo programa.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Sua Vez, Novamente!
• Escreva um programa chamado quebranome, que pergunta ao usuário seu nome na forma Nome Sobrenome1 Sobrenome2 e exiba Nome, Sobrenome1 e Sobrenome1 em três linhas diferentes.
• Em outras palavras, após o nome ser lido pela entrada, o programa precisa quebrá-lo em três pedados (Nome, Sobrenome1 e Sobrenome2) e exibir um por linha.
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Quebra Nome
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Listagem dos Principais Métodos da Classe str
capitalize count encode endswith format index isalnum isalpha isdecimal isdigit islower isnumeric isprintable isspace istitle isupper join lower partition replace split splitlines startswith strip swapcase title upper
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Módulo string
Use import string para utilizar o módulo string da biblioteca padrão de Python. Este módulo define algumas cadeias úteis:
>> string.ascii_letters
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
>> string.ascii_lowercase abcdefghijklmnopqrstuvwxyz
>> string.ascii_uppercase ABCDEFGHIJKLMNOPQRSTUVWXYZ
>> string.capwords('o dia está ensolarado') 'O Dia Está Ensolarado'
>> string.digits 0123456789
>> string.hexdigits 0123456789abcdefABCDEF
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
>> string.maketrans
<function maketrans at 0xb73d20ec>
>> string.octdigits 01234567
>> string.printable
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
>> string.punctuation
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
>> string.whitespace
© Jurandy Soares, 2011 -- http://bit.ly/jurandy
Referências
Estas transparências são adaptações para Python 3 de materiais de programação pegos da Internet. * http://www.cse.ohio-state.edu/cse201
© Jurandy Soares, 2011 -- http://bit.ly/jurandy