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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aprendendo-python.vidal.press/manipulacao-de-strings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
