Aula 04 – Python – String

More videos
Views
   

Aula 04 – Curso de Python – Strings

Aulas baseadas no livro Python para Desenvolvedores do Luiz Eduardo Borges.

STRINGS EM PYTHON (TEXTO EM PYTHON)

 Como funciona Strings em python

Como funciona Strings em python

Voltar para página principal do blog

Todas as aulas desse curso

Aula 03                 Aula 05

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 um nova string.

str = "casa"

Memória

Memória

str[3] = "o"

Memória

Memória

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

Memória

Memória

str agora aponta para outro objeto na memória

str agora aponta para outro objeto na memória

str agora aponta para outro objeto na memória

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.

string slice

string slice

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

Voltar para página principal do blog

Todas as aulas desse curso

Aula 03                 Aula 05

Obrigado

Até a próxima

(Visited 615 times, 1 visits today)
About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>