aula 20 strings - institute of mathematics and statistics ...mms/mac1101s2019/aula20 - python -...
TRANSCRIPT
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
Aula 20 – Strings
Já usamos bastante o objeto string em nossos exemplos de programas. Vamos agora explorar esse objeto com mais detalhes.
Strings são sequências de caracteres ou cadeias de caracteres. Embora seja uma palavra em inglês, portanto de gênero
neutro, daremos preferência a dizer uma string e não um string.
Em Python não existe o tipo char (character) como em outras linguagens. Em Python existe o tipo string (str). Quando
necessário, usamos uma string com um caractere apenas. Existe também a string com zero caracteres ou string vazia.
Embora possam ser comparadas as vezes com listas de caracteres, strings e listas são objetos diferentes.
Uma constante do tipo string é sempre delimitada por apóstrofos ou aspas.
movel = "cadeira"
cor = 'amarela'
letra = "a"
vazia = ""
Operações com Strings
Os operadores + (adição) e * (multiplicação) podem ser usados com strings com os significados seguintes:
+ é uma concatenação de strings
* é uma repetição de strings
print(letra + movel + cor)
print(letra + " " + movel + " " + cor)
print(letra + vazia + movel + vazia + cor)
nova_st = letra + "-" + movel + "-" + cor
print(nova_st)
print (movel + " " + cor * 3)
print ((movel + " " + cor + " ") * 3)
print("AB" * 5 + "CD" * 2)
Saida:
acadeiraamarela
a cadeira amarela
acadeiraamarela
a-cadeira-amarela
cadeira amarelaamarelaamarela
cadeira amarela cadeira amarela cadeira amarela
ABABABABABCDCD
Acesso a cada um dos caracteres da string
Podemos acessar individualmente cada caractere da string usando um índice como no caso das listas.
índice positivo 0 1 2 3 4 5 6 7 8 9 10 11 12 13
string a c a s a a m a r e l a
índice negativo -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
Os índices podem ser positivos (do inicio ao fim) ou negativos (do fim ao início).
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
# do início para o fim
print("Acessando os elementos do início para o fim")
for ind in range(6): print(s[ind])
# do fim para o inicio
print("Acessando os elementos do fim para o inicio")
for ind in range(-1, -6, -1): print(s[ind])
Saida:
Acessando os elementos do início para o fim
a
c
a
s
a
Acessando os elementos do fim para o inicio
.
a
l
e
r
O tamanho da string
A função len, quando aplicada a uma string devolve o comprimento desta string ou a quantidade de caracteres nesta string.
s = 'minha string'
print(s, " - tem comprimento = ", len(s))
Saida:
minha string - tem comprimento = 12
Assim, os elementos da string s são:
Com índices crescentes: s[0] ... s[len(s) – 1]
Com índices decrescentes: s[-len(s)] ... s[– 1]
Outro exemplo:
s = "a casa amarela"
# do início para o fim
print("\nAcessando os elementos do início para o fim")
for ind in range(len(s)): print(s[ind], end='')
# do fim para o inicio
print("\nAcessando os elementos do fim para o inicio")
for ind in range(-len(s), 0): print(s[ind], end = '')
Saida:
Acessando os elementos do início para o fim
a casa amarela
Acessando os elementos do fim para o inicio
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
a casa amarela
O acesso às fatias da string
É possível fazer referência a um trecho de uma string. Assim, para uma string s, a notação s[n:m] significa a substring
iniciando no elemento n e terminando no elemento (m – 1). Ou seja, não inclui o elemento m.
s = "minha terra tem palmeiras"
print(s[6:10])
print(s[0:4])
print(s[17:20])
print(s[:4])
print(s[12:])
print(s[-9:-5])
print(s[:-6])
print(s[-6:])
Saida:
terr
minh
alm
minh
tem palmeiras
palm
minha terra tem pal
meiras
Caracteres – ASCII – UNICODE – UTF-8
Caracteres são armazenados internamente como números. Assim é necessária uma codificação, isto é,
uma associação entre um caractere e um valor numérico. Existem vários tipos de codificação (ASCII,
EBCDIC, BCD, BAUDOT, etc.), mas a mais utilizada é o ASCII que é o padrão na linguagem Python.
O ASCII (American Standard Code for Information Interchange) é um código de 7 bits, portanto possui
128 possíveis combinações (valores de 0 a 127). Na codificação ASCII cada caractere ocupa 1 byte (8
bits). Sobra ainda 1 bit que já foi no passado usado em comunicação assíncrona (transmissão byte a
byte) como bit de paridade/imparidade (bit de correção) e que hoje é usado como uma extensão do
código (valores de 128 a 255).
Abaixo a tabela ASCII.
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
A função chr()
O programa abaixo imprime cada um dos caracteres ASCII de 32 a 127, que são os códigos
correspondentes aos caracteres gráficos. A função chr() transforma um número, no caractere
correspondente. for i in range(32, 128, 1):
print("valor = ", i, " caractere =", chr(i))
Saída:
valor = 32 caractere =
valor = 33 caractere = !
valor = 34 caractere = "
valor = 35 caractere = #
valor = 36 caractere = $
valor = 37 caractere = %
valor = 38 caractere = &
valor = 39 caractere = '
valor = 40 caractere = (
valor = 41 caractere = )
valor = 42 caractere = *
valor = 43 caractere = +
valor = 44 caractere = ,
valor = 45 caractere = -
valor = 46 caractere = .
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
valor = 47 caractere = /
valor = 48 caractere = 0
valor = 49 caractere = 1
valor = 50 caractere = 2
valor = 51 caractere = 3
valor = 52 caractere = 4
valor = 53 caractere = 5
valor = 54 caractere = 6
valor = 55 caractere = 7
valor = 56 caractere = 8
valor = 57 caractere = 9
valor = 58 caractere = :
valor = 59 caractere = ;
valor = 60 caractere = <
valor = 61 caractere = =
valor = 62 caractere = >
valor = 63 caractere = ?
valor = 64 caractere = @
valor = 65 caractere = A
valor = 66 caractere = B
valor = 67 caractere = C
valor = 68 caractere = D
valor = 69 caractere = E
valor = 70 caractere = F
valor = 71 caractere = G
valor = 72 caractere = H
valor = 73 caractere = I
valor = 74 caractere = J
valor = 75 caractere = K
valor = 76 caractere = L
valor = 77 caractere = M
valor = 78 caractere = N
valor = 79 caractere = O
valor = 80 caractere = P
valor = 81 caractere = Q
valor = 82 caractere = R
valor = 83 caractere = S
valor = 84 caractere = T
valor = 85 caractere = U
valor = 86 caractere = V
valor = 87 caractere = W
valor = 88 caractere = X
valor = 89 caractere = Y
valor = 90 caractere = Z
valor = 91 caractere = [
valor = 92 caractere = \
valor = 93 caractere = ]
valor = 94 caractere = ^
valor = 95 caractere = _
valor = 96 caractere = `
valor = 97 caractere = a
valor = 98 caractere = b
valor = 99 caractere = c
valor = 100 caractere = d
valor = 101 caractere = e
valor = 102 caractere = f
valor = 103 caractere = g
valor = 104 caractere = h
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
valor = 105 caractere = i
valor = 106 caractere = j
valor = 107 caractere = k
valor = 108 caractere = l
valor = 109 caractere = m
valor = 110 caractere = n
valor = 111 caractere = o
valor = 112 caractere = p
valor = 113 caractere = q
valor = 114 caractere = r
valor = 115 caractere = s
valor = 116 caractere = t
valor = 117 caractere = u
valor = 118 caractere = v
valor = 119 caractere = w
valor = 120 caractere = x
valor = 121 caractere = y
valor = 122 caractere = z
valor = 123 caractere = {
valor = 124 caractere = |
valor = 125 caractere = }
valor = 126 caractere = ~
valor = 127 caractere = •
Os caracteres abaixo de 32 são caracteres com funções especiais e históricas, pois esse código foi
definido em época pré-computador. Em geral são códigos que tem funções especiais quando enviados
para o vídeo, para as impressoras, teletipos, telex, etc. Nem todos possuem imagem gráfica
correspondente.
Exemplos:
CR (13) – carriage return ( retorna para o início da linha corrente)
LF (10) – line feed (pula para a próxima linha)
FF (14) – form feed (pula para a próxima página)
BEL (07) – beep (aciona o dispositivo sonoro)
Etc.
A função ord()
A função ord() faz o inverso da chr(). Transforma o caractere no valor correspondente.
for x in "ABCabc0123456789":
print("caractere =", x, " valor = ", ord(x))
Saida:
caractere = A valor = 65
caractere = B valor = 66
caractere = C valor = 67
caractere = a valor = 97
caractere = b valor = 98
caractere = c valor = 99
caractere = 0 valor = 48
caractere = 1 valor = 49
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
caractere = 2 valor = 50
caractere = 3 valor = 51
caractere = 4 valor = 52
caractere = 5 valor = 53
caractere = 6 valor = 54
caractere = 7 valor = 55
caractere = 8 valor = 56
caractere = 9 valor = 57
Olhando agora para a tabela ASCII acima, não existe nenhuma letra acentuada existente nas línguas latinas. Também existe
nenhuma letra de outros alfabetos não latinos (japonês, coreano, hindu, etc.). Criam-se então extensões do código ASCII
para os caracteres mais comuns específicos de outros alfabetos, usando-se os valores de 128 a 256. Para os idiomas latinos
usa-se normalmente a extensão detalhada no ANEXO ao final.
A codificação UNICODE e UTF-8:
A codificação UNICODE tem como objetivo codificar todos os possíveis caracteres usados em todos os idiomas. Há cerca
de 1.000.000 de caracteres codificados. Ocorre que com isso, o uso de memória seria muito maior, pois seriam necessários
alguns bytes para representar cada caractere. No ANEXO ao final, está a tabela UNICODE para os 256 primeiros
caracteres.
A codificação UTF-8 é um subconjunto do UNICODE normalmente usada. Coincide com o ASCII nos primeiros 128
caracteres. Quando há um caractere especial, usa-se um caractere prefixo antes do código UNICODE deste caractere
especial. Com isso, os caracteres especiais são codificados em 2 bytes na codificação UTF-8, também mostrados no
ANEXO para os primeiros 256 caracteres.
Comparação de strings:
A comparação entre duas strings é feita, levando em conta o código numérico da codificação ASCII de
cada caractere. Verifique na tabela ASCII que o código numérico atribuído às letras, segue a ordem
alfabética. Além disso, as maiúsculas são menores que as minúsculas. Os caracteres numéricos ("0" a
"9") também seguem a ordem numérica. Assim:
"a" < "b" < ... < "z"
"A" < "B" < ... < "Z"
"A" < "a", "B" < "b" ... "Z" < "z"
"0" < "1" < ... < "9"
A comparação de strings é feita caractere a caractere da esquerda para a direita. O primeiro caractere
diferente encontrado decide a ordem das strings. Exemplos:
"maria da silva" > "maria da selva" ("i" > "e")
"xico" > "francisco" ("x" > "f")
"maria" < “mariana" (o de maior comprimento é o maior)
"antonio dos santos" < "antonio santos"
"Maria" < "maria" ("M" < "m")
"Antonio" > "AntoNio" ("n" > "N")
# comparação de strings
print(1, "maria da silva" > "maria da selva")
print(2, "xico" > "francisco")
print(3, "maria" < "mariana")
print(4, "antonio dos santos" < "antonio santos")
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
print(5, "Maria" < "maria")
print(6, "Antonio" > "AntoNio")
print(7, "antonio" > "Zizico")
print(8, "Xico" < "armando")
Saida:
1 True
2 True
3 True
4 True
5 True
6 True
7 True
8 True
P20.1) Função que compara duas strings s e t. Devolve 0, 1, ou -1, dependendo se s == t, s > t ou s < t.
def compara_strings(s, t):
if s == t: return 0
if s > t: return 1
return -1
Exemplo de chamadas de compara_strings:
x = "maria da silva"
y = "maria da selva"
print(compara_strings(x, y))
print(compara_strings(x, "maria da silveira"))
x = "maria"
print(compara_strings("maria", x))
Saida:
1
-1
0
Conforme os exemplos acima, strings podem ser comparadas diretamente com os operadores usuais (>, <, ==, >=, <= e !=).
Se isso não fosse possível, como seria uma função que comparasse duas strings, caractere a caractere? Veja a função abaixo:
P20.1A) Idem - Função que compara duas strings s e t, caractere a caractere. Devolve 0, 1, ou -1, dependendo se s == t, s > t
ou s < t.
def compara_strings(s, t):
k = 0
n, m = len(s), len(t)
# compara s[k] com t[k]
while k < n and k < m:
if s[k] > t[k]: return 1
if s[k] < t[k]: return -1
# são iguais - continua comparando
k += 1
# se chegou aqui então s é o trecho inicial de t ou vice-versa
if k < n: return 1 # t é igual ao início de s
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
if k < m: return -1 # s é igual ao início de t
return 0 # s e t são iguais
Letras maiúsculas, minúsculas e vogais acentuadas
Como as letras maiúsculas são menores que as minúsculas, quando há misturas das mesmas, a
comparação fica confusa. Por exemplo:
"antonio" > "Antonio" e "antonio" > "anTonio" "antonio" > "Ziraldo"
Uma solução normalmente usada para evitar esse tipo de confusão é transformar todas as letras para
maiúsculas ou minúsculas antes de fazer a comparação.
P20.2) Função maiuscula(s). Devolve string t contendo o mesmo de s, apenas transformando as
minúsculas em maiúsculas.
def maiuscula(s):
t = '' # string vazia
for i in range(len(s)):
if 'a' <= s[i] <= 'z': # verifica se é minúscula
k = ord(s[i]) – 32 # transforma o código em maiúscula
t = t + chr(k) # transforma o código no caractere
else: t = t + s[i]
return t
Outro problema na comparação alfabética ocorre com as vogais acentuadas: á, ã, â, à, é, ê, í, ó, õ, ô, ú,
com as correspondentes maiúsculas. O código numérico destas letras não tem uma formação coerente
com a ordem alfabética. A solução é transformá-las na letra sem acento correspondente antes de fazer a
comparação. O mesmo ocorre com ç (cedilha) que é melhor ser transformado em c antes da
comparação.
As letras acentuadas
Para as letras acentuadas, bem como para outros caracteres usados num determinado idioma, que não
pertencem à tabela ASCII, são atribuídos códigos numéricos entre 128 e 255. Constituem extensões da
tabela ASCII para um determinado idioma. Veja na tabela no final das notas a extensão para os idiomas
latinos normalmente utilizada.
acentuadas = "áàâãéêíóõôúÁÀÂÃÉÊÍÓÕÔÚçÇ"
for k in range(len(acentuadas)):
print(acentuadas[k], ' - ', ord(acentuadas[k]))
Será impresso (confira com a tabela no final das notas):
á - 225
à - 224
â - 226
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
ã - 227
é - 233
ê - 234
í - 237
ó - 243
õ - 245
ô - 244
ú - 250
Á - 193
À - 192
 - 194
à - 195
É - 201
Ê - 202
Í - 205
Ó - 211
Õ - 213
Ô - 212
Ú - 218
ç - 231
Ç - 199
P20.3) Função Converte_Acentuadas(s). Devolve string t contendo o mesmo de s, apenas
transformando as acentuadas nas não acentuadas correspondentes, o ç em c.
def Converte_Acentuadas(s):
acentM = "áàâãéêíóõôúÁÀÂÃÉÊÍÓÕÔÚçÇ"
acentV = "aaaaeeiooouAAAAEEIOOOUcC"
t = ""
# converte
for ch in range(len(s)):
# verifica se é acentuada ou não
k = Procura(s[ch], acentM)
# verifica se achou
if k >= 0: # acentuada
t = t + acentV[k] # converte
else: # não acentuada
t = t + s[ch]
return t
def Procura(x, s):
# procura o caractere x na string s
# devolve: índice da primeira ocorrência de x em s
# -1 se x não for encontrado em s
for j in range(len(s)):
if x == s[j]: return j
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
return -1
P20.4) Função compara_strings(s, t). Análogo ao P20.1, transformando as minúsculas ou acentuadas
em maiúsculas. Use as funções maiuscula() e Converte_acentuadas() acima.
def compara_strings(s, t):
# Converte as acentuadas
s1 = Converte_Acentuadas(s)
t1 = Converte_Acentuadas(t)
# converte para maiúscula
s2 = maiuscula(s1)
t2 = maiuscula(t1)
# compara as strings transformadas
if s2 == t2: return 0
if s2 > t2: return 1
return -1
def Converte_Acentuadas(s):
acentM = "áàâãéêíóõôúÁÀÂÃÉÊÍÓÕÔÚçÇ"
acentV = "aaaaeeiooouAAAAEEIOOOUcC"
t = ""
# converte
for ch in range(len(s)):
# verifica se é acentuada ou não
k = Procura(s[ch], acentM)
# verifica se achou
if k >= 0: # acentuada
t = t + acentV[k] # converte
else: # não acentuada
t = t + s[ch]
return t
def Procura(x, s):
# procura o caractere x na string s
# devolve: índice da primeira ocorrência de x em s
# -1 se x não for encontrado em s
for j in range(len(s)):
if x == s[j]: return j
return -1
def maiuscula(s):
t = '' # string vazia
for i in range(len(s)):
if s[i] >= 'a' <= 'z':
k = ord(s[i]) - 32
t = t + chr(k)
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
else: t = t + s[i]
return t
Métodos do objeto str - strings
O objeto str têm seus próprios atributos e métodos. Há uma grande variedade. Algumas das funções
que escrevemos acima podem ser substituídas pelos métodos já existentes. Abaixo os mais importantes:
Método Parâmetros Descrição
Upper nenhum Retorna string com todas as letras maiúsculas
Lower nenhum Retorna string com todas as letras minúsculas
Capitalize nenhum Retorna string com o primeiro caractere em maiúscula e o resto em minúsculas
Strip nenhum Retorna um string removendo caracteres em branco do início e do fim
Lstrip nenhum Retorna um string removendo caracteres em branco do início
Rstrip nenhum Retorna um string removendo caracteres em branco do fim
Count Item Retorna o número de ocorrências de item
Replace old, new Substitui todas as ocorrências do substring old por new
Center largura Retorna um string centrado em um campo de tamanho largura
Ljust largura Retorna um string justificado à esquerda em um campo de tamanho largura
Rjust largura Retorna um string justificado à direita em um campo de tamanho largura
Find Item Retorna o índice mais à esquerda onde o substring item é encontrado ou -1.
Rfind Item Retorna o índice mais à direita onde o substring item é encontrado
Index Item Como find, mas causa um erro de execução caso item não seja encontrado
Rindex Item Como rfind, mas causa um erro de execução caso item não seja encontrado
Exemplos abaixo:
ss = "Hello, World"
print("\n\n Exemplo - upper, lower, capitalize\n")
print(ss.upper())
print(ss.lower())
print(ss.capitalize())
print("\n\n Exemplo - strip, lstrip, rstrip\n")
tt = " Novo Texto Para Texte "
print("*****" + tt.strip()+ "*****")
print("*****" + tt.lstrip()+ "*****")
print("*****" + tt.rstrip()+ "*****")
print("\n\n Exemplo - counter, replace\n")
print(tt.count("o"))
print(tt.replace("ex", "es"))
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
print("\n\n Exemplo - center, ljust, rjust\n")
print("***" + tt.center(40) + "***")
print("***" + tt.ljust(40) + "***")
print("***" + tt.rjust(40) + "***")
print("\n\n Exemplo - find, rfind\n")
print(tt.find("kk"))
print(tt.find("T"))
print(tt.find("Tex"))
print(tt.rfind("T"))
print(tt.rfind("Tex"))
print("\n\n Exemplo - index, rindex\n")
print(tt.index("ex"))
print(tt.rindex("ex"))
Saida:
Exemplo - upper, lower, capitalize
HELLO, WORLD
hello, world
Hello, world
Exemplo - strip, lstrip, rstrip
*****Novo Texto Para Texte*****
*****Novo Texto Para Texte *****
***** Novo Texto Para Texte*****
Exemplo - counter, replace
3
Novo Testo Para Teste
Exemplo - center, ljust, rjust
*** Novo Texto Para Texte ***
*** Novo Texto Para Texte ***
*** Novo Texto Para Texte ***
Exemplo - find, rfind
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
-1
8
8
19
19
Exemplo - index, rindex
9
20
Lista completa dos métodos e atributos: >>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__',
'__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize',
'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find',
'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal',
'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition',
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split',
'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper',
'zfill']
Strings são objetos imutáveis
Esse é um conceito muito importante em Python, mas simplificadamente significa que não se pode atribuir (comando de
atribuição) um novo valor a um elemento de uma string.
s = "texte"
s[2] = "s" # erro - comando inválido
Para fazer essa substituição temos que criar uma nova string. Algo como:
t = s.replace("x", "s" )
Ou seja, se o objetivo é fazer alguma mudança numa string, o que deve ser feito é a criação de uma nova string.
Observe também que os objetos abaixo são distintos:
s = "abc"
t = ["a", "b", "c"]
Embora os comandos abaixo produzam a mesma saída:
for k in range(len(s)):print(s[k])
for k in range(len(t)):print(t[k])
Varredura da string – operadores in e not in
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
Já vimos anteriormente que podemos varrer os elementos individualmente de uma string. Por exemplo, a sequência abaixo
imprime os caracteres individuais da string s:
s = "Texto para teste"
for k in range(len(s)): print (s[k])
O mesmo pode ser feito da seguinte forma:
s = "Texto para teste"
for x in s: print(x)
Os operadores in e not in podem ser usados em várias situações com strings.
# imprime apenas as consoantes
for x in s:
if x not in "aeiouAEIOU": print(x)
Constantes especiais do módulo string
O módulo string contém algumas constantes bastante úteis. Veja as saídas abaixo e algumas constantes existentes no
módulo string:
import string
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)
print(string.punctuation)
Saida:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Lista completa de atributos, constantes e métodos do módulo string >>> import string
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__',
'__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase',
'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable',
'punctuation', 'whitespace']
Exercícios
P20.5) Função compacta(s) que devolve uma string eliminando os brancos de s.
P20.6) Idem compacta(s), substituindo cadeias de mais de um branco, por um só branco.
P20.7) Função contapal(s) que devolve como resultado o número de palavras do string s. Uma
palavra é uma sequência de caracteres não brancos, precedida e seguida por brancos.
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
P20.8) Função substring(s, b)que verifica se o string s é sub-string de b. Devolve 1 (sim) ou
0 (não).
P20.9) Função substring(s, b, k)que verifica se o string s é sub-string de b. A procura deve
ser feita a partir de s[k]. Devolve 1 (sim) ou 0 (não).
P20.10) Função substring(s, b, k, f)que verifica se o string s é sub-string de b. A procura
deve ser feita a partir de s[k] até s[f – 1]. Devolve 1 (sim) ou 0 (não).
P20.11) Modifique P20.9 e P20.10, fazendo com que os parâmetros k e f seja opcionais.
P20.12) Função Conta_Vogais(s). Conta quantas vezes cada vogal aparece na string s. Devolve
lista com 5 inteiros, que mostram quantas vezes cada vogal apareceu.
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
ANEXO - Tabela de códigos ASCII, UNICODE e UTF-8 (0 a 256)
Unicode
Hexadecimal
Caractere UTF-8
Hexadecial
Nome
U+0000 0 <control>
U+0001 1 <control>
U+0002 2 <control>
U+0003 3 <control>
U+0004 4 <control>
U+0005 5 <control>
U+0006 6 <control>
U+0007 7 <control>
U+0008 8 <control>
U+0009 9 <control>
U+000A 0a <control>
U+000B 0b <control>
U+000C 0c <control>
U+000D 0d <control>
U+000E 0e <control>
U+000F 0f <control>
U+0010 10 <control>
U+0011 11 <control>
U+0012 12 <control>
U+0013 13 <control>
U+0014 14 <control>
U+0015 15 <control>
U+0016 16 <control>
U+0017 17 <control>
U+0018 18 <control>
U+0019 19 <control>
U+001ª 1a <control>
U+001B 1b <control>
U+001C 1c <control>
U+001D 1d <control>
U+001E 1e <control>
U+001F 1f <control>
U+0020 20 SPACE
U+0021 ! 21 EXCLAMATION MARK
U+0022 " 22 QUOTATION MARK
U+0023 # 23 NUMBER SIGN
U+0024 $ 24 DOLLAR SIGN
U+0025 % 25 PERCENT SIGN
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+0026 & 26 AMPERSAND
U+0027 ' 27 APOSTROPHE
U+0028 ( 28 LEFT PARENTHESIS
U+0029 ) 29 RIGHT PARENTHESIS
U+002ª * 2a ASTERISK
U+002B + 2b PLUS SIGN
U+002C , 2c COMMA
U+002D - 2d HYPHEN-MINUS
U+002E . 2e FULL STOP
U+002F / 2f SOLIDUS
U+0030 0 30 DIGIT ZERO
U+0031 1 31 DIGIT ONE
U+0032 2 32 DIGIT TWO
U+0033 3 33 DIGIT THREE
U+0034 4 34 DIGIT FOUR
U+0035 5 35 DIGIT FIVE
U+0036 6 36 DIGIT SIX
U+0037 7 37 DIGIT SEVEN
U+0038 8 38 DIGIT EIGHT
U+0039 9 39 DIGIT NINE
U+003ª : 3a COLON
U+003B ; 3b SEMICOLON
U+003C < 3c LESS-THAN SIGN
U+003D = 3d EQUALS SIGN
U+003E > 3e GREATER-THAN SIGN
U+003F ? 3f QUESTION MARK
U+0040 @ 40 COMMERCIAL AT
U+0041 A 41 LATIN CAPITAL LETTER A
U+0042 B 42 LATIN CAPITAL LETTER B
U+0043 C 43 LATIN CAPITAL LETTER C
U+0044 D 44 LATIN CAPITAL LETTER D
U+0045 E 45 LATIN CAPITAL LETTER E
U+0046 F 46 LATIN CAPITAL LETTER F
U+0047 G 47 LATIN CAPITAL LETTER G
U+0048 H 48 LATIN CAPITAL LETTER H
U+0049 I 49 LATIN CAPITAL LETTER I
U+004ª J 4a LATIN CAPITAL LETTER J
U+004B K 4b LATIN CAPITAL LETTER K
U+004C L 4c LATIN CAPITAL LETTER L
U+004D M 4d LATIN CAPITAL LETTER M
U+004E N 4e LATIN CAPITAL LETTER N
U+004F O 4f LATIN CAPITAL LETTER O
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+0050 P 50 LATIN CAPITAL LETTER P
U+0051 Q 51 LATIN CAPITAL LETTER Q
U+0052 R 52 LATIN CAPITAL LETTER R
U+0053 S 53 LATIN CAPITAL LETTER S
U+0054 T 54 LATIN CAPITAL LETTER T
U+0055 U 55 LATIN CAPITAL LETTER U
U+0056 V 56 LATIN CAPITAL LETTER V
U+0057 W 57 LATIN CAPITAL LETTER W
U+0058 X 58 LATIN CAPITAL LETTER X
U+0059 Y 59 LATIN CAPITAL LETTER Y
U+005A Z 5a LATIN CAPITAL LETTER Z
U+005B [ 5b LEFT SQUARE BRACKET
U+005C \ 5c REVERSE SOLIDUS
U+005D ] 5d RIGHT SQUARE BRACKET
U+005E ^ 5e CIRCUMFLEX ACCENT
U+005F _ 5f LOW LINE
U+0060 ` 60 GRAVE ACCENT
U+0061 A 61 LATIN SMALL LETTER A
U+0062 B 62 LATIN SMALL LETTER B
U+0063 C 63 LATIN SMALL LETTER C
U+0064 D 64 LATIN SMALL LETTER D
U+0065 E 65 LATIN SMALL LETTER E
U+0066 F 66 LATIN SMALL LETTER F
U+0067 G 67 LATIN SMALL LETTER G
U+0068 H 68 LATIN SMALL LETTER H
U+0069 I 69 LATIN SMALL LETTER I
U+006A J 6a LATIN SMALL LETTER J
U+006B K 6b LATIN SMALL LETTER K
U+006C L 6c LATIN SMALL LETTER L
U+006D M 6d LATIN SMALL LETTER M
U+006E N 6e LATIN SMALL LETTER N
U+006F O 6f LATIN SMALL LETTER O
U+0070 P 70 LATIN SMALL LETTER P
U+0071 Q 71 LATIN SMALL LETTER Q
U+0072 R 72 LATIN SMALL LETTER R
U+0073 S 73 LATIN SMALL LETTER S
U+0074 T 74 LATIN SMALL LETTER T
U+0075 U 75 LATIN SMALL LETTER U
U+0076 V 76 LATIN SMALL LETTER V
U+0077 W 77 LATIN SMALL LETTER W
U+0078 X 78 LATIN SMALL LETTER X
U+0079 Y 79 LATIN SMALL LETTER Y
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+007A Z 7a LATIN SMALL LETTER Z
U+007B { 7b LEFT CURLY BRACKET
U+007C | 7c VERTICAL LINE
U+007D } 7d RIGHT CURLY BRACKET
U+007E ~ 7e TILDE
U+007F 7f <control>
U+0080 c2 80 <control>
U+0081 c2 81 <control>
U+0082 c2 82 <control>
U+0083 c2 83 <control>
U+0084 c2 84 <control>
U+0085 c2 85 <control>
U+0086 c2 86 <control>
U+0087 c2 87 <control>
U+0088 c2 88 <control>
U+0089 c2 89 <control>
U+008A c2 8a <control>
U+008B c2 8b <control>
U+008C c2 8c <control>
U+008D c2 8d <control>
U+008E c2 8e <control>
U+008F c2 8f <control>
U+0090 c2 90 <control>
U+0091 c2 91 <control>
U+0092 c2 92 <control>
U+0093 c2 93 <control>
U+0094 c2 94 <control>
U+0095 c2 95 <control>
U+0096 c2 96 <control>
U+0097 c2 97 <control>
U+0098 c2 98 <control>
U+0099 c2 99 <control>
U+009A c2 9a <control>
U+009B c2 9b <control>
U+009C c2 9c <control>
U+009D c2 9d <control>
U+009E c2 9e <control>
U+009F c2 9f <control>
U+00A0 c2 a0 NO-BREAK SPACE
U+00A1 ¡ c2 a1 INVERTED EXCLAMATION MARK
U+00A2 ¢ c2 a2 CENT SIGN
U+00A3 £ c2 a3 POUND SIGN
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+00A4 ¤ c2 a4 CURRENCY SIGN
U+00A5 ¥ c2 a5 YEN SIGN
U+00A6 ¦ c2 a6 BROKEN BAR
U+00A7 § c2 a7 SECTION SIGN
U+00A8 ¨ c2 a8 DIAERESIS
U+00A9 © c2 a9 COPYRIGHT SIGN
U+00AA ª c2 aa FEMININE ORDINAL INDICATOR
U+00AB « c2 ab LEFT-POINTING DOUBLE ANGLE QUOTATION
MARK
U+00AC ¬ c2 ac NOT SIGN
U+00AD c2 ad SOFT HYPHEN
U+00AE ® c2 ae REGISTERED SIGN
U+00AF ¯ c2 af MACRON
U+00B0 ° c2 b0 DEGREE SIGN
U+00B1 ± c2 b1 PLUS-MINUS SIGN
U+00B2 ² c2 b2 SUPERSCRIPT TWO
U+00B3 ³ c2 b3 SUPERSCRIPT THREE
U+00B4 ´ c2 b4 ACUTE ACCENT
U+00B5 µ c2 b5 MICRO SIGN
U+00B6 ¶ c2 b6 PILCROW SIGN
U+00B7 · c2 b7 MIDDLE DOT
U+00B8 ¸ c2 b8 CEDILLA
U+00B9 ¹ c2 b9 SUPERSCRIPT ONE
U+00BA º c2 ba MASCULINE ORDINAL INDICATOR
U+00BB » c2 bb RIGHT-POINTING DOUBLE ANGLE QUOTATION
MARK
U+00BC ¼ c2 bc VULGAR FRACTION ONE QUARTER
U+00BD ½ c2 bd VULGAR FRACTION ONE HALF
U+00BE ¾ c2 be VULGAR FRACTION THREE QUARTERS
U+00BF ¿ c2 bf INVERTED QUESTION MARK
U+00C0 À c3 80 LATIN CAPITAL LETTER A WITH GRAVE
U+00C1 Á c3 81 LATIN CAPITAL LETTER A WITH ACUTE
U+00C2 Â c3 82 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
U+00C3 Ã c3 83 LATIN CAPITAL LETTER A WITH TILDE
U+00C4 Ä c3 84 LATIN CAPITAL LETTER A WITH DIAERESIS
U+00C5 Å c3 85 LATIN CAPITAL LETTER A WITH RING ABOVE
U+00C6 Æ c3 86 LATIN CAPITAL LETTER AE
U+00C7 Ç c3 87 LATIN CAPITAL LETTER C WITH CEDILLA
U+00C8 È c3 88 LATIN CAPITAL LETTER E WITH GRAVE
U+00C9 É c3 89 LATIN CAPITAL LETTER E WITH ACUTE
U+00CA Ê c3 8a LATIN CAPITAL LETTER E WITH CIRCUMFLEX
U+00CB Ë c3 8b LATIN CAPITAL LETTER E WITH DIAERESIS
U+00CC Ì c3 8c LATIN CAPITAL LETTER I WITH GRAVE
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+00CD Í c3 8d LATIN CAPITAL LETTER I WITH ACUTE
U+00CE Î c3 8e LATIN CAPITAL LETTER I WITH CIRCUMFLEX
U+00CF Ï c3 8f LATIN CAPITAL LETTER I WITH DIAERESIS
U+00D0 Ð c3 90 LATIN CAPITAL LETTER ETH
U+00D1 Ñ c3 91 LATIN CAPITAL LETTER N WITH TILDE
U+00D2 Ò c3 92 LATIN CAPITAL LETTER O WITH GRAVE
U+00D3 Ó c3 93 LATIN CAPITAL LETTER O WITH ACUTE
U+00D4 Ô c3 94 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
U+00D5 Õ c3 95 LATIN CAPITAL LETTER O WITH TILDE
U+00D6 Ö c3 96 LATIN CAPITAL LETTER O WITH DIAERESIS
U+00D7 × c3 97 MULTIPLICATION SIGN
U+00D8 Ø c3 98 LATIN CAPITAL LETTER O WITH STROKE
U+00D9 Ù c3 99 LATIN CAPITAL LETTER U WITH GRAVE
U+00DA Ú c3 9a LATIN CAPITAL LETTER U WITH ACUTE
U+00DB Û c3 9b LATIN CAPITAL LETTER U WITH CIRCUMFLEX
U+00DC Ü c3 9c LATIN CAPITAL LETTER U WITH DIAERESIS
U+00DD Ý c3 9d LATIN CAPITAL LETTER Y WITH ACUTE
U+00DE Þ c3 9e LATIN CAPITAL LETTER THORN
U+00DF ß c3 9f LATIN SMALL LETTER SHARP S
U+00E0 À c3 a0 LATIN SMALL LETTER A WITH GRAVE
U+00E1 Á c3 a1 LATIN SMALL LETTER A WITH ACUTE
U+00E2 Â c3 a2 LATIN SMALL LETTER A WITH CIRCUMFLEX
U+00E3 Ã c3 a3 LATIN SMALL LETTER A WITH TILDE
U+00E4 Ä c3 a4 LATIN SMALL LETTER A WITH DIAERESIS
U+00E5 Å c3 a5 LATIN SMALL LETTER A WITH RING ABOVE
U+00E6 Æ c3 a6 LATIN SMALL LETTER AE
U+00E7 Ç c3 a7 LATIN SMALL LETTER C WITH CEDILLA
U+00E8 È c3 a8 LATIN SMALL LETTER E WITH GRAVE
U+00E9 É c3 a9 LATIN SMALL LETTER E WITH ACUTE
U+00EA Ê c3 aa LATIN SMALL LETTER E WITH CIRCUMFLEX
U+00EB Ë c3 ab LATIN SMALL LETTER E WITH DIAERESIS
U+00EC Ì c3 ac LATIN SMALL LETTER I WITH GRAVE
U+00ED Í c3 ad LATIN SMALL LETTER I WITH ACUTE
U+00EE Î c3 ae LATIN SMALL LETTER I WITH CIRCUMFLEX
U+00EF Ï c3 af LATIN SMALL LETTER I WITH DIAERESIS
U+00F0 Ð c3 b0 LATIN SMALL LETTER ETH
U+00F1 Ñ c3 b1 LATIN SMALL LETTER N WITH TILDE
U+00F2 Ò c3 b2 LATIN SMALL LETTER O WITH GRAVE
U+00F3 Ó c3 b3 LATIN SMALL LETTER O WITH ACUTE
U+00F4 Ô c3 b4 LATIN SMALL LETTER O WITH CIRCUMFLEX
U+00F5 Õ c3 b5 LATIN SMALL LETTER O WITH TILDE
U+00F6 Ö c3 b6 LATIN SMALL LETTER O WITH DIAERESIS
Aula 20 – Strings MAC 110/115 – Python - Marcilio
Aula 20 – Strings
MAC 110/115 – Python - Marcilio
U+00F7 ÷ c3 b7 DIVISION SIGN
U+00F8 Ø c3 b8 LATIN SMALL LETTER O WITH STROKE
U+00F9 Ù c3 b9 LATIN SMALL LETTER U WITH GRAVE
U+00FA Ú c3 ba LATIN SMALL LETTER U WITH ACUTE
U+00FB Û c3 bb LATIN SMALL LETTER U WITH CIRCUMFLEX
U+00FC Ü c3 bc LATIN SMALL LETTER U WITH DIAERESIS
U+00FD Ý c3 bd LATIN SMALL LETTER Y WITH ACUTE
U+00FE Þ c3 be LATIN SMALL LETTER THORN
U+00FF Ÿ c3 bf LATIN SMALL LETTER Y WITH DIAERESIS