> For the complete documentation index, see [llms.txt](https://aprendendo-python.vidal.press/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aprendendo-python.vidal.press/manipulacao-de-strings.md).

# Manipulação de Strings

<figure><img src="/files/ip3KMJZ00kzlREqeLUfo" alt=""><figcaption><p>Doe, ajude a continuar criando conteúdo</p></figcaption></figure>

As **strings** em Python são uma sequência de caracteres que podem ser usadas para armazenar e manipular texto. Elas são um dos tipos de dados mais fundamentais e poderosos da linguagem, com diversas funcionalidades e métodos para facilitar a manipulação de texto. Neste capítulo, exploraremos os principais conceitos, operações e métodos disponíveis para trabalhar com strings em Python.

**Definição e Criação de Strings**

Em Python, strings podem ser definidas de várias formas, utilizando aspas simples (`'...'`), aspas duplas (`"..."`), ou aspas triplas (`'''...'''` ou `"""..."""`). Veja alguns exemplos:

```python
# Usando aspas simples
nome = 'Python'

# Usando aspas duplas
linguagem = "Programação"

# Usando aspas triplas (permitem múltiplas linhas)
descricao = '''Python é uma linguagem de programação
de alto nível e muito versátil.'''

print(nome)
print(linguagem)
print(descricao)
```

**Acessando Caracteres de uma String**

As strings em Python são indexadas, o que significa que podemos acessar caracteres individuais utilizando o índice. O primeiro caractere tem o índice 0, o segundo 1, e assim por diante.

```python
# Acessando o primeiro caractere de uma string
palavra = "Python"
print(palavra[0])  # Saída: 'P'

# Acessando o último caractere de uma string
print(palavra[-1])  # Saída: 'n'
```

Também podemos acessar **substrings** utilizando a notação de fatiamento (`slice`):

```python
# Fatiamento de strings
print(palavra[0:3])  # Saída: 'Pyt' (caracteres do índice 0 ao 2)
print(palavra[3:])   # Saída: 'hon' (do índice 3 até o final)
```

**Strings são Imutáveis**

Uma característica importante das strings em Python é que elas são **imutáveis**, ou seja, uma vez que uma string é criada, ela não pode ser alterada diretamente. Se for necessário modificar uma string, será preciso criar uma nova string.

Exemplo:

```python
# Tentando alterar uma string (gera erro)
palavra = "Python"
# palavra[0] = "J"  # Isso geraria um erro

# Para modificar, precisamos criar uma nova string
nova_palavra = "J" + palavra[1:]
print(nova_palavra)  # Saída: 'Jython'
```

**Principais Operações com Strings**

1. **Concatenação**: O operador `+` permite concatenar (juntar) strings.

   ```python
   saudacao = "Olá, " + "Mundo!"
   print(saudacao)  # Saída: 'Olá, Mundo!'
   ```
2. **Repetição**: O operador `*` permite repetir uma string várias vezes.

   ```python
   repetida = "Python! " * 3
   print(repetida)  # Saída: 'Python! Python! Python! '
   ```
3. **Verificação de Substring**: Podemos usar o operador `in` para verificar se uma substring está presente em uma string.

   ```python
   frase = "Aprendendo Python"
   print("Python" in frase)  # Saída: True
   ```
4. **Comprimento de uma String**: A função `len()` retorna o número de caracteres de uma string.

   ```python
   tamanho = len(frase)
   print(tamanho)  # Saída: 17
   ```

**Métodos Comuns de Manipulação de Strings**

Python fornece uma variedade de métodos integrados para trabalhar com strings, desde alteração de maiúsculas e minúsculas até remoção de espaços e substituições de caracteres. Vamos explorar os métodos mais comuns.

1. **Maiúsculas e Minúsculas**:

   * `upper()`: Converte todos os caracteres para maiúsculas.
   * `lower()`: Converte todos os caracteres para minúsculas.
   * `capitalize()`: Converte o primeiro caractere da string para maiúscula.

   ```python
   texto = "python é ótimo"
   print(texto.upper())      # Saída: 'PYTHON É ÓTIMO'
   print(texto.lower())      # Saída: 'python é ótimo'
   print(texto.capitalize()) # Saída: 'Python é ótimo'
   ```
2. **Remoção de Espaços**:

   * `strip()`: Remove espaços em branco no início e no final da string.
   * `lstrip()`: Remove espaços em branco apenas do início.
   * `rstrip()`: Remove espaços em branco apenas do final.

   ```python
   texto = "  Olá, Mundo!  "
   print(texto.strip())  # Saída: 'Olá, Mundo!'
   ```
3. **Substituição de Substrings**:

   * `replace(antigo, novo)`: Substitui todas as ocorrências de uma substring por outra.

   ```python
   frase = "Eu amo Python"
   nova_frase = frase.replace("amo", "gosto de")
   print(nova_frase)  # Saída: 'Eu gosto de Python'
   ```
4. **Divisão e Junção de Strings**:

   * `split(separador)`: Divide uma string em uma lista de substrings com base em um delimitador.
   * `join(iterável)`: Junta elementos de uma lista (ou outro iterável) em uma única string, usando um separador.

   ```python
   # Dividindo uma string
   frase = "Aprender Python é divertido"
   palavras = frase.split()  # Por padrão, separa por espaços
   print(palavras)  # Saída: ['Aprender', 'Python', 'é', 'divertido']

   # Juntando uma lista em uma string
   nova_frase = " ".join(palavras)
   print(nova_frase)  # Saída: 'Aprender Python é divertido'
   ```
5. **Encontrando Substrings**:

   * `find(substring)`: Retorna o índice da primeira ocorrência da substring (ou `-1` se não for encontrada).
   * `count(substring)`: Retorna o número de vezes que a substring aparece na string.

   ```python
   frase = "Eu amo Python porque Python é fácil"
   print(frase.find("Python"))  # Saída: 7 (primeira ocorrência)
   print(frase.count("Python"))  # Saída: 2 (duas ocorrências)
   ```
6. **Verificação de Formato**:

   * `startswith(substring)`: Verifica se a string começa com uma determinada substring.
   * `endswith(substring)`: Verifica se a string termina com uma determinada substring.
   * `isalpha()`: Verifica se a string contém apenas letras.
   * `isdigit()`: Verifica se a string contém apenas números.

   ```python
   palavra = "Python"
   print(palavra.startswith("Py"))  # Saída: True
   print(palavra.isalpha())         # Saída: True
   print(palavra.isdigit())         # Saída: False
   ```

**Formatação de Strings**

Python oferece várias maneiras de formatar strings, o que é útil quando queremos incluir variáveis ou valores dentro de uma string.

1. **Operador `%`**: Um método antigo de formatação de strings usando `%`.

   ```python
   nome = "João"
   idade = 30
   print("Meu nome é %s e eu tenho %d anos." % (nome, idade))
   ```
2. **Método `format()`**: Uma forma mais moderna e flexível de formatação.

   ```python
   print("Meu nome é {} e eu tenho {} anos.".format(nome, idade))
   ```
3. **f-strings**: Introduzidas no Python 3.6, f-strings permitem incluir expressões diretamente dentro de uma string com `{}`.

   ```python
   print(f"Meu nome é {nome} e eu tenho {idade} anos.")
   ```

**Strings Multilinhas**

Para criar strings que se estendem por várias linhas, usamos aspas triplas:

```python
mensagem = """Olá,
Este é um exemplo de string
que ocupa múltiplas linhas."""
print(mensagem)
```

**Conclusão**

A manipulação de strings é uma habilidade essencial para qualquer desenvolvedor Python. Neste capítulo, exploramos desde operações básicas de acesso e concatenação até métodos mais avançados de formatação e modificação de strings. Com esse conhecimento, você estará preparado para lidar com diversas situações envolvendo texto no desenvolvimento de aplicações Python.
