Aula 04 – Curso de Python – Strings
Aulas baseadas no livro Python para Desenvolvedores do Luiz Eduardo Borges.
STRINGS EM PYTHON (TEXTO EM PYTHON)
Que fazer esse curso com certificação?
Acesse:
https://workover.com.br/python-codigo-fluente
Voltar para página principal do blog
Todas as aulas desse curso
Aula 03 Aula 05
Automatize tarefas do dia a dia com python:
Aula 04 – Curso de Python – Strings
As strings em Python são instruções nativas (built-ins) para armazenar texto.
Como são imutáveis, não é possível adicionar, remover ou mesmo modificar algum caractere de uma string.
Para realizar essas operações, o Python precisa criar uma nova string.
str = "casa"
str[3] = "o"
Saída:
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
TypeError: ‘str’ object does not support item assignment
id(str)
Saída:
2275647308328
#concatena e salva em outro objeto
str = str + " da moeda“
#ou
str += " da moeda"
id(str)
Saída:
2275647302704
str agora aponta para outro objeto na memória
Garbage Collector
O Garbage Collector verifica depois de um tempo que não existe mais nenhuma variável apontando para o objeto de id = 2275647308328, então ele o elimina da memória.
Tipos:
- String padrão: s = ‘Olá mundo’
- String unicode: u = u’Oi mundo’
A string padrão pode ser convertida para unicode através da função unicode().
A inicialização de strings pode ser:
- Com aspas simples ou duplas.
- Em várias linhas consecutivas, desde que seja entre três aspas simples ou duplas.
- Sem expansão de caracteres (exemplo: s = r’\n’, em que s conterá os caracteres ‘\’ e ‘n’).
Operações com strings:
# -*- coding: latin1 -*-
nome = 'Toti’
# Concatenação
print('Olá' + nome + ', tudo bem? ‘)
Saída:
Olá Toti, Tudo bem?
Operações com strings:
# Interpolação
print('O tamanho da palavra %s é: %d' % (s, len(s)))
Saída:
O tamanho da palavra Toti é: 4
# String tratada como sequência
for ch in s:
print(ch)
Saída:
T
o
t
i
Operações com strings:
# Strings são objetos
if s.startswith('T'): print(s.upper())
Saída:
TOTI
# o que acontecerá?
print(3 * s)
Saída:
‘TotiTotiToti’
Operador “%” é usado para fazer interpolação de strings. A interpolação é mais eficiente no uso de memória do que a concatenação convencional.
Símbolos usados na interpolação:
- %s: string.
- %d: inteiro.
- %o: octal.
- %x: hexacimal.
- %f: real.
- %e: real exponencial.
- %%: sinal de percentagem.
Os símbolos podem ser usados para apresentar números em diversos formatos.
Exemplo:
# -*- coding: latin1 -*-
# Zeros a esquerda
print('Agora são %02d:%02d.' % (16, 30))
Saída:
Agora são 16:30.
# Real (número após o ponto controla as casas decimais)
print('Percentagem: %.1f%%, Exponencial:%.2e' % (5.333, 0.00314))
Saída:
Percentagem: 5.3%, Exponencial:3.14e-03
# Octal e hexadecimal
print('Decimal: %d, Octal: %o, Hexadecimal: %x' % (10, 10, 10))
Saída:
Decimal: 10, Octal: 12, Hexadecimal: a
A partir da versão 2.6, está disponível outra forma de interpolação além do operador “%”, o método de string e a função chamados format().
Exemplos:
medicos = [('Carlos', 'cardiologista', 'hospital Souza Aguiar'),
('Maria', 'oftalmologista', 'clínica dos olhos’)]
# Parâmetros identificados pela ordem
msg = '{0} é {1} do {2}’
for nome, especialidade, localTrabalho in medicos:
print(msg.format(nome, especialidade, localTrabalho))
Saída:
Carlos é cardiologista do hospital Souza Aguiar
Maria é oftalmologista do clínica dos olhos
# Parâmetros identificados pelo nome
msg = '{saudacao}, são {hora:02d}:{minuto:02d}’
print(msg.format(saudacao='Bom dia', hora=7, minuto=30))
Saída:
Bom dia, são 07:30
# Função builtin format()
print('Pi =', format(3.14159, '.3e’))
Saída:
Pi = 3.142e+00
A função format() pode ser usada para formatar apenas um dado de cada vez.
Fatias (slices) de strings podem ser obtidas colocando índices entre colchetes após a string.
Os índices no Python:
- Começam em zero.
- Contam a partir do fim se forem negativos.
- Podem ser definidos como trechos, na forma [inicio:fim + 1:intervalo]. Se não for definido o inicio, será considerado como zero. Se não for definido o fim + 1, será considerado o tamanho do objeto. O intervalo (entre os caracteres), se não for definido, será 1.
É possível inverter strings usando um intervalo negativo:
print('Python'[::-1])
Saída:
nohtyP
Várias funções para tratar com texto estão implementadas no módulo string.
# -*- coding: latin1 -*-
# importando o módulo string
import string
# O alfabeto
a = string.ascii_letters
print(a)
Saída:
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
# Rodando o alfabeto um caractere para a esquerda
b = a[1:] + a[0]
Saída: ‘bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZa’
O método str.maketrans () é usado para criar uma tabela de conversão de mapeamentos de caracteres, o primeiro argumento é uma string que representa o caractere a ser convertido, o segundo parâmetro é a representação de cadeia de conversões.
Nota: As duas strings devem ter o mesmo comprimento e um relacionamento de 1-1 .
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "Essa é uma string de exemplo!!!"
print(str.translate(trantab))
Saída: Ess1 é 5m1 str3ng d2 2x2mpl4!!!
O módulo também implementa um tipo chamado Template, que é um modelo de string que pode ser preenchido através de um dicionário. Os identificadores são iniciados por cifrão ($) e podem ser cercados por chaves, para evitar confusões.
# -*- coding: latin1 -*-
# importando o módulo string
import string
# Cria uma string template
st = string.Template('$aviso aconteceu em $quando')
# Preenche o modelo com um dicionário
s = st.substitute({'aviso': 'A falta de eletricidade',
'quando': '03 de Fevereiro de 2002'})
print(s)
Saída:
A falta de eletricidade aconteceu em 03 de Fevereiro de 2002
É possível usar strings mutáveis no Python, através do módulo UserString, que define o tipo MutableString:
# -*- coding: latin1 -*-
# importando o módulo UserString
import UserString
s = UserString.MutableString('Python')
s[0] = 'p'
print(s)
Saída: python
Strings mutáveis são menos eficientes do que strings imutáveis, pois são mais complexas (em termos de estrutura), o que se reflete em maior consumo de recursos (CPU e memória).
As strings unicode podem convertidas para strings convencionais através do método decode() e o caminho inverso pode ser feito pelo método encode().
# -*- coding: latin1 -*-
# String unicode
u = u'Hüsker Dü'
# Convertendo para str
s = u.encode('latin1')
print(s, '=>', type(s))
Saída: b’H\xfcsker D\xfc’ => <class ‘bytes’>
u = s.decode('latin1')
print(repr(u), '=>', type(u))
Saída: ‘Hüsker Dü’ => <class ‘str’>
Para usar os dois métodos, é necessário passar como argumento a codificação compatível, as mais utilizadas com a língua portuguesa são “latin1” e “utf8”.