Dominando Strings em Python: Criação, Formatação e Manipulação
Strings em Python
Neste tutorial você aprenderá a criar, formatar, modificar e deletar strings em Python. Também será apresentado a várias operações e funções de string.
Vídeo: Strings em Python
O Que é String em Python?
Uma string é uma sequência de caracteres.
Um caractere é simplesmente um símbolo. Por exemplo, o idioma inglês tem 26 caracteres.
Computadores não lidam com caracteres, eles lidam com números (binário). Mesmo que você veja caracteres na tela, internamente eles são armazenados e manipulados como combinação de 0s e 1s.
Essa conversão de caractere para número é chamada encoding (codificação), e o processo reverso é decoding (decodificação). ASCII e Unicode são algumas das codificações populares usadas.
Em Python, uma string é uma sequência de caracteres Unicode. Unicode foi introduzido para incluir todos os caracteres de todas as linguagens e trazer uniformidade na codificação. Você pode aprender sobre Unicode em Python Unicode.
Como Criar uma String em Python?
Strings podem ser criadas envolvendo caracteres em aspas simples ou duplas. Até aspas triplas podem ser usadas em Python, mas geralmente para representar strings multilinha e docstrings.
# definindo strings em Python
# todas as seguintes são equivalentes
my_string = 'Hello'
print(my_string)
my_string = "Hello"
print(my_string)
my_string = '''Hello'''
print(my_string)
# aspas triplas podem estender múltiplas linhas
my_string = """Hello, welcome to the world of Python"""
print(my_string)
Quando você executa o programa, a saída será:
Hello Hello Hello Hello, welcome to the world of Python
Como Acessar Caracteres em uma String?
Podemos acessar caracteres individuais usando indexação e um intervalo de caracteres usando fatiamento. Índice começa em 0. Tentar acessar caractere fora do intervalo levantará IndexError. O índice deve ser inteiro. Não podemos usar floats ou outros tipos, isso resultará em TypeError.
Python permite indexação negativa para suas sequências.
O índice -1 refere-se ao último item, -2 ao penúltimo e assim por diante. Podemos acessar um intervalo de itens em uma string usando o operador de fatiamento : (dois-pontos).
# Acessando caracteres de string em Python
str = 'programiz'
print('str = ', str)
# primeiro caractere
print('str[0] = ', str[0])
# último caractere
print('str[-1] = ', str[-1])
# fatiamento 2º a 5º caractere
print('str[1:5] = ', str[1:5])
# fatiamento 6º ao 2º último
print('str[5:-2] = ', str[5:-2])
Quando executamos o programa acima, obtemos a seguinte saída:
str = programiz str[0] = p str[-1] = z str[1:5] = rogr str[5:-2] = am
Se tentarmos acessar índice fora do intervalo ou usar números que não sejam inteiros, obteremos erros.
# índice deve estar no intervalo
>>> my_string[15]
...
IndexError: string index out of range
# índice deve ser inteiro
>>> my_string[1.5]
...
TypeError: string indices must be integers
Fatiamento pode ser melhor visualizado considerando o índice entre os elementos como mostrado abaixo.
Se quisermos acessar um intervalo, precisamos do índice que fatiará a porção da string.

Como Mudar ou Deletar uma String?
Strings são imutáveis. Isso significa que elementos de uma string não podem ser alterados após atribuídos. Podemos simplesmente reatribuir strings diferentes ao mesmo nome.
>>> my_string = 'programiz'
>>> my_string[5] = 'a'
...
TypeError: 'str' object does not support item assignment
>>> my_string = 'Python'
>>> my_string
'Python'
Não podemos deletar ou remover caracteres de uma string. Mas deletar a string inteiramente é possível usando a palavra-chave del.
>>> del my_string[1]
...
TypeError: 'str' object doesn't support item deletion
>>> del my_string
>>> my_string
...
NameError: name 'my_string' is not defined
Operações com Strings em Python
Existem muitas operações que podem ser realizadas com strings, o que as torna um dos tipos de dados mais usados em Python.
Para aprender mais sobre tipos de dados disponíveis em Python visite: Python Data Types
Concatenação de Duas ou Mais Strings
Juntar duas ou mais strings em uma única é chamado concatenação.
O operador + faz isso em Python. Simplesmente escrever dois literais de string juntos também os concatena.
O operador * pode ser usado para repetir a string por um número determinado de vezes.
# Operações com Strings Python
str1 = 'Hello'
str2 = 'World!'
# usando +
print('str1 + str2 = ', str1 + str2)
# usando *
print('str1 * 3 =', str1 * 3)
Quando executamos o programa acima, obtemos a seguinte saída:
str1 + str2 = HelloWorld! str1 * 3 = HelloHelloHello
Escrever dois literais de string juntos também os concatena como o operador +.
Se quisermos concatenar strings em linhas diferentes, podemos usar parênteses.
>>> # dois literais de string juntos
>>> 'Hello ''World!'
'Hello World!'
>>> # usando parênteses
>>> s = ('Hello '
... 'World')
>>> s
'Hello World'
Iterando Sobre uma String
Podemos iterar sobre uma string usando loop for. Aqui está um exemplo para contar o número de 'l's em uma string.
# Iterando sobre uma string
count = 0
for letter in 'Hello World':
if letter == 'l':
count += 1
print(count, 'letters found')
Quando executamos o programa acima, obtemos a seguinte saída:
3 letters found
Teste de Pertinência em String
Podemos testar se uma substring existe dentro de uma string ou não, usando a palavra-chave in.
>>> 'a' in 'program'
True
>>> 'at' not in 'battle'
False
Funções Built-in para Trabalhar com Strings
Várias funções built-in que funcionam com sequências funcionam com strings também.
Algumas das mais usadas são enumerate() e len(). A função enumerate() retorna um objeto enumerate. Ele contém o índice e valor de todos os itens da string como pares. Isso pode ser útil para iteração.
Similarmente, len() retorna o comprimento (número de caracteres) da string.
str = 'cold'
# enumerate()
list_enumerate = list(enumerate(str))
print('list(enumerate(str)) = ', list_enumerate)
# contagem de caracteres
print('len(str) = ', len(str))
Quando executamos o programa acima, obtemos a seguinte saída:
list(enumerate(str)) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] len(str) = 4
Formatação de Strings em Python
Sequências de Escape
Se quisermos imprimir um texto como He said, "What's there?", não podemos usar aspas simples nem duplas. Isso resultará em SyntaxError pois o texto contém ambos os tipos de aspas.
>>> print("He said, "What's there?"")
...
SyntaxError: invalid syntax
>>> print('He said, "What's there?"')
...
SyntaxError: invalid syntax
Uma forma de contornar é usar aspas triplas. Alternativamente, podemos usar sequências de escape.
Uma sequência de escape começa com barra invertida e é interpretada diferentemente. Se usarmos aspas simples para representar uma string, todas as aspas simples dentro devem ser escapadas. O mesmo vale para aspas duplas. Veja como representar o texto acima.
# usando aspas triplas
print('''He said, "What's there?"''')
# escapando aspas simples
print('He said, "What\'s there?"')
# escapando aspas duplas
print("He said, \"What's there?\"")
Quando executamos o programa acima, obtemos a seguinte saída:
He said, "What's there?" He said, "What's there?" He said, "What's there?"
Aqui está a lista de todas as sequências de escape suportadas pelo Python.
| Sequência de Escape | Descrição |
|---|---|
| \newline | Barra invertida e nova linha ignoradas |
| \\ | Barra invertida |
| \' | Aspas simples |
| \" | Aspas duplas |
| \a | ASCII Bell |
| \b | ASCII Backspace |
| \f | ASCII Formfeed |
| \n | ASCII Linefeed (nova linha) |
| \r | ASCII Carriage Return |
| \t | ASCII Horizontal Tab |
| \v | ASCII Vertical Tab |
| \ooo | Caractere com valor octal ooo |
| \xHH | Caractere com valor hexadecimal HH |
Alguns exemplos:
>>> print("C:\\Python32\\Lib")
C:\Python32\Lib
>>> print("This is printed\nin two lines")
This is printed
in two lines
>>> print("This is \x48\x45\x58 representation")
This is HEX representation
Raw String para Ignorar Sequências de Escape
Às vezes podemos desejar ignorar sequências de escape dentro de uma string. Para isso, colocamos r ou R antes da string. Isso implica que é uma raw string e qualquer sequência de escape dentro será ignorada.
>>> print("This is \x61 \ngood example")
This is a good example
>>> print(r"This is \x61 \ngood example")
This is \x61 \ngood example
O Método format() para Formatação de Strings
O método format() disponível no objeto string é muito versátil e poderoso na formatação. Strings de formato contêm chaves {} como placeholders ou campos de substituição que são substituídos.
Podemos usar argumentos posicionais ou por palavra-chave para especificar a ordem.
# Método format() de string Python
# ordem padrão (implícita)
default_order = "{}, {} and {}".format('John','Bill','Sean')
print('\n--- Default Order ---')
print(default_order)
# ordem usando argumento posicional
positional_order = "{1}, {0} and {2}".format('John','Bill','Sean')
print('\n--- Positional Order ---')
print(positional_order)
# ordem usando argumento keyword
keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean')
print('\n--- Keyword Order ---')
print(keyword_order)
Quando executamos o programa acima, obtemos a seguinte saída:
--- Default Order --- John, Bill and Sean --- Positional Order --- Bill, John and Sean --- Keyword Order --- Sean, Bill and John
O método format() pode ter especificações de formato opcionais. Elas são separadas do nome do campo usando dois-pontos. Por exemplo, podemos alinhar à esquerda <, à direita > ou centralizar ^ uma string no espaço dado.
Também podemos formatar inteiros como binário, hexadecimal, etc. e floats podem ser arredondados ou exibidos em formato exponencial. Existem toneladas de formatações disponíveis com o método format().
>>> # formatando inteiros
>>> "Binary representation of {0} is {0:b}".format(12)
'Binary representation of 12 is 1100'
>>> # formatando floats
>>> "Exponent representation: {0:e}".format(1566.345)
'Exponent representation: 1.566345e+03'
>>> # arredondar
>>> "One third is: {0:.3f}".format(1/3)
'One third is: 0.333'
>>> # alinhamento de string
>>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham')
'|butter | bread | ham|'
Formatação Estilo Antigo
Podemos até formatar strings como o antigo estilo sprintf() usado em C. Usamos o operador % para isso.
>>> x = 12.3456789
>>> print('The value of x is %3.2f' % x)
The value of x is 12.35
>>> print('The value of x is %3.4f' % x)
The value of x is 12.3457
Métodos Comuns de Strings em Python
Existem numerosos métodos disponíveis no objeto string. O método format() mencionado acima é um deles. Alguns dos métodos comumente usados são lower(), upper(), join(), split(), find(), replace() etc. Aqui está uma lista completa de todos os métodos built-in para trabalhar com strings em Python.
>>> "PrOgRaMiZ".lower()
'programiz'
>>> "PrOgRaMiZ".upper()
'PROGRAMIZ'
>>> "This will split all words into a list".split()
['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list']
>>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string'])
'This will join all words into a string'
>>> 'Happy New Year'.find('ew')
7
>>> 'Happy New Year'.replace('Happy','Brilliant')
'Brilliant New Year'
python
- Dominando Strings em C#: Fundamentos, Operações e Técnicas Avançadas
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Representações String em Enums Java
- Domine Operações com Strings em Python: Replace, Join, Split, Reverse e Conversão de Case
- Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Domine Strings format() em Python com Exemplos Claros
- Python len(): Guia Prático para Medir Comprimento de Objetos
- Domine o Método String.find() do Python: Sintaxe, Exemplos e Alternativas