aula 20 strings - institute of mathematics and statistics ...mms/mac1101s2019/aula20 - python -...

23
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).

Upload: others

Post on 19-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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).

Page 2: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 3: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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.

Page 4: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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 = .

Page 5: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 6: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 7: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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")

Page 8: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 9: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 10: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 11: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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)

Page 12: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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"))

Page 13: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 14: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 15: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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.

Page 16: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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.

Page 17: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 18: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 19: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 20: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 21: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 22: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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

Page 23: Aula 20 Strings - Institute of Mathematics and Statistics ...mms/mac1101s2019/aula20 - Python - Strin… · MAC 110/115 – Python - Marcilio Aula 20 – Strings MAC 110/115 – Python

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