Atualizado: 04/11/2024

Manipulando Strings - Python

Uma string representa uma sequência de caracteres em codificação Unicode, delimitada por aspas. Para definir strings, o Python permite usar tanto aspas simples quanto aspas duplas:

message = "Hello World!"
print(message)  # Hello World!

name = 'Tom'
print(name)  # Tom

Se a string for longa, você pode dividi-la em partes e colocá-las em diferentes linhas de código. Nesse caso, toda a string é colocada entre parênteses, e suas partes individuais são delimitadas por aspas:

text = ("Laudate omnes gentes laudate "
    "Magnificat in secula ")
print(text)

Se quisermos definir um texto multilinha, podemos usar aspas triplas, sejam elas simples ou duplas:

'''
Este é um comentário
'''
text = '''Laudate omnes gentes laudate
Magnificat in secula
Et anima mea laudate
Magnificat in secula 
'''
print(text)

Ao usar aspas triplas, não as confunda com comentários: se o texto entre aspas triplas é atribuído a uma variável, ele é uma string, não um comentário.

Sequências de escape em strings

Uma string pode conter vários caracteres especiais: sequências de escape. Algumas delas são:

  • \\: permite adicionar uma barra invertida (\) dentro da string

  • \': permite adicionar uma aspa simples dentro da string

  • \": permite adicionar uma aspa dupla dentro da string

  • \n: adiciona uma nova linha

  • \t: adiciona uma tabulação (quatro espaços)

Vamos usar algumas dessas sequências:

text = "Message:\n\"Hello World\""
print(text)

Saída no console:

Message:
"Hello World"

Embora essas sequências possam nos ajudar em algumas situações, como inserir aspas na string, fazer tabulações ou quebras de linha, elas também podem atrapalhar. Por exemplo:

path = "C:\python\name.txt"
print(path)

Aqui, a variável path contém um caminho para um arquivo. No entanto, dentro da string aparecem as sequências \n, que serão interpretadas como sequências de escape. Assim, obteremos a seguinte saída no console:

C:\python
ame.txt

Para evitar essa situação, colocamos o prefixo r antes da string:

path = r"C:\python\name.txt"
print(path)

Inserindo valores em strings

O Python permite inserir valores de outras variáveis dentro de uma string. Para isso, colocamos as variáveis entre chaves {} dentro da string e adicionamos o prefixo f antes da string:

userName = "Tom"
userAge = 37
user = f"name: {userName}  age: {userAge}"
print(user)   # name: Tom  age: 37

Neste caso, {userName} será substituído pelo valor da variável userName. Da mesma forma, {userAge} será substituído pelo valor de userAge.

Acessando caracteres de uma string

Podemos acessar caracteres individuais de uma string usando índices entre colchetes:

string = "hello world"
c0 = string[0]  # h
print(c0)
c6 = string[6]  # w
print(c6)

c11 = string[11]  # IndexError: string index out of range
print(c11)

A indexação começa em zero, então o primeiro caractere da string tem índice 0. Se tentarmos acessar um índice que não existe na string, receberemos uma exceção IndexError. No exemplo acima, o comprimento da string é 11 caracteres, então os índices válidos vão de 0 a 10.

Para acessar caracteres a partir do final da string, podemos usar índices negativos. Por exemplo, o índice -1 representa o último caractere, -2 o penúltimo, e assim por diante:

string = "hello world"
c1 = string[-1]  # d
print(c1)
c5 = string[-5]  # w
print(c5)

Ao trabalhar com caracteres, é importante lembrar que strings são imutáveis; portanto, se tentarmos alterar um caractere individual, receberemos um erro, como no exemplo a seguir:

string = "hello world"
string[1] = "R"  # TypeError: 'str' object does not support item assignment

Só podemos redefinir completamente o valor da string, atribuindo-lhe um novo valor.

Percorrendo uma string

Podemos percorrer todos os caracteres de uma string usando um loop for:

string = "hello world"
for char in string:
    print(char)

Extraindo substrings

Se necessário, podemos extrair não apenas caracteres individuais, mas também substrings. Para isso, usamos a seguinte sintaxe:

  • string[:end]: extrai uma sequência de caracteres desde o índice 0 até o índice end (não incluindo end)

  • string[start:end]: extrai caracteres do índice start até end (não incluindo end)

  • string[start:end:step]: extrai caracteres do índice start até end (não incluindo end), pulando de step em step

Vamos usar todas as variantes de extração de substrings:

string = "hello world"

# do índice 0 até o 5
sub_string1 = string[:5]
print(sub_string1)      # hello

# do índice 2 até o 5
sub_string2 = string[2:5]
print(sub_string2)      # llo

# do índice 2 ao 9, pulando de dois em dois
sub_string3 = string[2:9:2]
print(sub_string3)      # lowr

Concatenando strings

Uma das operações mais comuns com strings é a concatenação. Para unir strings, usamos o operador de adição:

name = "Tom"
surname = "Smith"
fullname = name + " " + surname
print(fullname)  # Tom Smith

Concatenar duas strings é simples, mas e se quisermos juntar uma string com um número? Nesse caso, precisamos converter o número em string usando a função str():

name = "Tom"
age = 33
info = "Name: " + name + " Age: " + str(age)
print(info)  # Name: Tom Age: 33

Repetindo strings

Para repetir uma string várias vezes, usamos o operador de multiplicação:

print("a" * 3)  # aaa
print("he" * 4)  # hehehehe

Comparando strings

É importante falar sobre a comparação de strings. A comparação é feita em ordem lexicográfica. Ao comparar strings, os caracteres e seus casos (maiúsculas/minúsculas) são considerados. Por exemplo, um dígito é considerado menor que qualquer letra alfabética. Uma letra maiúscula é considerada menor que uma letra minúscula. Por exemplo:

str1 = "1a"
str2 = "aa"
str3 = "Aa"
print(str1 > str2)  # False, já que o primeiro caractere de str1 é um dígito
print(str2 > str3)  # True, pois o primeiro caractere de str2 é minúsculo

Portanto, a string "1a" é considerada menor que "aa". Primeiro, a comparação é feita pelo primeiro caractere. Se os primeiros caracteres de ambas as strings forem dígitos, a menor será a que tiver o dígito menor; por exemplo, "1a" é menor que "2a".

Se os primeiros caracteres forem letras do alfabeto no mesmo caso, a comparação segue a ordem alfabética. Assim, "aa" é menor que "ba", e "ba" é menor que "ca".

Se os primeiros caracteres forem iguais, os segundos caracteres são comparados, se existirem.

A sensibilidade ao caso nem sempre é desejável, pois podemos estar lidando com strings essencialmente iguais. Nesse caso, antes de comparar, podemos converter ambas as strings para o mesmo caso.

A função lower() converte a string para minúsculas, e a função upper() para maiúsculas:

str1 = "Tom"
str2 = "tom"
print(str1 == str2)  # False - as strings não são iguais

print(str1.lower() == str2.lower())  # True

Funções ord e len

Como as strings contêm caracteres Unicode, podemos usar a função ord() para obter o valor numérico de um caractere na codificação Unicode:

print(ord("A"))     # 65

Para obter o comprimento de uma string, usamos a função len():

string = "hello world"
length = len(string)
print(length)   # 11

Buscando em uma string

Com a expressão termo in string, podemos verificar se a substring termo está presente na string. Se a substring for encontrada, a expressão retorna True; caso contrário, retorna False:

text = "hello world"
exist = "hello" in text
print(exist)    # True

exist = "sword" in text
print(exist)    # False

Da mesma forma, usando o operador not in, podemos verificar a ausência de uma substring na string:

text = "hello world"
print("hello" not in text)    # False
print("sword" not in text)    # True
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com