Domine o método `split()` em Python: guia completo com exemplos!

Neste guia, você irá descobrir como utilizar o método `split()` em Python para decompor uma sequência de caracteres em uma lista de sequências menores.

Ao lidar com strings em Python, você tem acesso a diversos métodos internos que permitem obter versões modificadas dessas sequências, como transformá-las em maiúsculas, ordenar seus caracteres e muito mais. Um desses métodos é o `.split()`, que divide uma string em Python em uma lista de strings. Exploraremos seu funcionamento com exemplos práticos de código.

Ao concluir este guia, você terá aprendido:

  • O mecanismo de funcionamento do método `.split()`.
  • A personalização da divisão através dos parâmetros `sep` e `maxsplit`.

Vamos começar!

Sintaxe do Método `split()` em Python

A seguir, apresentamos a sintaxe geral para empregar o método `split()` em Python sobre qualquer string válida:

string.split(sep, maxsplit)

# Parâmetros:
sep, maxsplit

# Retorna:
Uma lista de strings

Aqui, `string` pode ser qualquer sequência de caracteres válida em Python.

Os parâmetros `sep` e `maxsplit` são opcionais.

  • `sep` representa o delimitador onde você deseja segmentar a string. Deve ser definido como uma string.
  • `maxsplit` é um número inteiro que especifica a quantidade máxima de divisões a serem feitas na string.

Quando você não fornece valores para esses parâmetros opcionais, seus valores padrão são automaticamente utilizados.

  • Se você não especificar o valor de `sep`, o espaço em branco é empregado como delimitador padrão.
  • Se você não especificar o valor de `maxsplit`, o valor padrão é -1, o que significa que a string será dividida em todas as ocorrências do delimitador.

Em termos simples:

O método `split()` fragmenta uma string no máximo `maxsplit` vezes, a partir do delimitador definido no parâmetro `sep`.

Agora que compreendemos a sintaxe do método `split()` em Python, vamos prosseguir com alguns exemplos práticos.

Fragmentando uma String Python em uma Lista de Strings

Se você tiver o Python 3 instalado em sua máquina, você pode acompanhar este tutorial executando os trechos de código a seguir em um ambiente REPL do Python.

Para iniciar o REPL, execute um dos seguintes comandos em seu terminal:

$ python
$ python -i

▶️ Você também pode experimentar esses exemplos no editor Python do etechpt.com.

Neste exemplo, `py_str` é uma string em Python. Vamos invocar o método `.split()` sobre `py_str` sem nenhum parâmetro e observar o resultado.

py_str = "Aprenda como usar split() em Python"
py_str.split()

# Saída
['Aprenda', 'como', 'usar', 'split()', 'em', 'Python']

Como você pode ver, a string foi dividida em todas as ocorrências de espaços em branco.

Dividindo uma String Python com Base em Delimitadores

#1. Em nosso primeiro exemplo, vamos separar a string `py_str` usando sublinhados duplos (`__`) como delimitador.

py_str = "Tudo__de__bom"
py_str.split(sep='__')

# Saída
['Tudo', 'de', 'bom']

#2. Vejamos outro exemplo. Aqui, `py_str` contém três frases, cada uma finalizada com um ponto (`.`).

py_str = "Eu adoro programar. Python é legal. Estou aprendendo Python em 2022"
py_str.split(sep='.')

# Saída
['Eu adoro programar', ' Python é legal', " Estou aprendendo Python em 2022"]

▶️ Ao chamar o método `.split()` nesta string, usando `.` como delimitador, a lista resultante contém três frases, conforme demonstrado na célula de código acima.

#3. Vamos formular algumas questões:

  • O que acontece se o delimitador não existir na string?
  • Como a divisão será realizada neste caso?

Aqui está um exemplo:

Tentamos dividir `py_str` usando o asterisco como delimitador.

py_str = "Esta linha não contém asterisco."
py_str.split(sep='*')

# Saída
['Esta linha não contém asterisco.']

O que não ocorre.

Como nenhuma divisão pode ser efetuada neste caso, a lista resultante contém a string completa.

Na próxima seção, veremos como utilizar o método `split()` sobre o conteúdo de um arquivo de texto.

Dividindo o Conteúdo de um Arquivo em Python

Ao trabalhar com arquivos de texto em Python, pode ser necessário fragmentar o conteúdo do arquivo – com base em um delimitador específico – para simplificar o processamento.

Aqui está um exemplo de arquivo de texto:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

O trecho de código a seguir demonstra como usar o método `split()` sobre o conteúdo do arquivo de texto de exemplo.

  • O código acima realiza as seguintes operações:
  • Utiliza o gerenciador de contexto `with` para abrir e trabalhar com o arquivo de texto ‘sample.txt’.
  • Lê o conteúdo do arquivo empregando o método `.read()` no objeto de arquivo `f`.
  • Divide o conteúdo, com base nas reticências (`…`) como delimitador, em uma lista chamada `str_list`.

Percorre a lista `str_list` para acessar cada string e exibi-la.

# Saída
Este é um arquivo de texto de exemplo
Ele contém informações sobre
Como começar a <a href="https://etechpt.com.com/pcap-certification/">programar em Python</a>
De acordo com a Pesquisa de Desenvolvedores StackOverflow de 2022
Python é uma das linguagens de programação mais apreciadas
Então, o que você está esperando? Comece a aprender!

Aqui está o resultado.

Como exercício, você pode tentar fragmentar o conteúdo de um arquivo de texto usando qualquer delimitador de sua preferência.

Dividindo uma String Python em Partes

Ao dividir uma string uma vez, você obtém duas partes; dividindo-a duas vezes, você terá três.

📋 Em geral, quando você divide uma string K vezes, você obtém K + 1 partes.

Isso é ilustrado a seguir.

Como o parâmetro `maxsplit` funciona (Imagem do autor)

py_str = "Parte#1  Eu sou uma parte maior, Parte#2"
py_str.split(maxsplit=1)

# Saída
['Parte#1', "Eu sou uma parte maior, Parte#2"]

#1. Definimos `maxsplit` como 1. Não especificamos um delimitador, então a divisão ocorrerá em espaços em branco por padrão.

Apesar da segunda parte da lista conter espaços em branco, a divisão não ocorre, pois agora a segmentação é controlada pelo valor de `maxsplit`, que é um.

py_str = "Parte#1 Parte#2 Eu sou uma grande Parte#3, embora eu contenha espaços em branco"
py_str.split(maxsplit=2)

# Saída
['Parte#1',
 'Parte#2',
 "Eu sou uma grande Parte#3, embora eu contenha espaços em branco"]

#2. Vamos aumentar o valor de `maxsplit` para 2 e observar como a divisão ocorre no seguinte exemplo.

Assim como no exemplo anterior, o valor de `maxsplit` determina o número de divisões efetuadas. Obtemos três partes, divisões após a primeira e a segunda ocorrência de espaço em branco.

#3. O que acontece se você definir `maxsplit` como um valor maior que o número de ocorrências do delimitador?

py_str = "Há, apenas, 4, vírgulas"
py_str.split(maxsplit=8)

# Saída
['Há,', 'apenas,', '4,', 'vírgulas']

Na célula de código a seguir, definimos `maxsplit` como 8, apesar de a string conter apenas quatro vírgulas.

Aqui, o método `split` divide `py_str` em todas as quatro ocorrências de vírgula. Mesmo se você tentar definir `maxsplit` para um valor menor que -1, como -7, a divisão ocorrerá em todas as ocorrências do delimitador.

Em seguida, vamos combinar tudo o que aprendemos e utilizar ambos os parâmetros, `sep` e `maxsplit`.

Dividindo uma String Python em Partes com Delimitador

py_str = "Parte#1, Parte#2, Eu sou uma grande Parte#3, embora eu contenha uma ,"
py_str.split(sep = ',',maxsplit=2)

# Saída
['Parte#1', ' Parte#2', " Eu sou uma grande Parte#3, embora eu contenha uma ,"]

#1. Suponha que precisemos dividir a string `py_str` em três partes, com base na ocorrência da vírgula (`,`). Para isso, podemos definir o valor de `sep` como `,` e o valor de `maxsplit` como 2 ao invocar o método.

Conforme demonstrado na saída, a divisão ocorre duas vezes, nas duas primeiras ocorrências do delimitador.

#2. O delimitador `sep` não precisa ser necessariamente um caractere especial. Ele pode ser uma sequência de caracteres especiais, como os sublinhados duplos que usamos anteriormente, ou mesmo uma substring.

py_str = "Você precisa aprender estruturas de dados, aprender algoritmos e aprender mais!"
py_str.split(sep = 'aprender',maxsplit=2)

# Saída
['Você precisa ', ' estruturas de dados, ', ' algoritmos, e aprender mais!']

Vamos definir a string `aprender` como o argumento `sep` e verificar como a divisão ocorre para diferentes valores de `maxsplit`. Aqui, definimos `maxsplit` como 2.

py_str = "Você precisa aprender estruturas de dados, aprender algoritmos e aprender mais!"
py_str.split(sep = 'aprender',maxsplit=-1)

# Saída
['Você precisa ', ' estruturas de dados, ', ' algoritmos, e ', ' mais!']

#3. Se você deseja dividir `py_str` em todas as ocorrências da string `aprender`, podemos invocar o método `.split()` definindo `sep = ‘aprender’` – sem o parâmetro `maxsplit`. Isso é equivalente a definir explicitamente o valor de `maxsplit` como -1, conforme apresentado na célula de código abaixo.

Notamos que a divisão ocorre em todas as ocorrências de `aprender`.

Conclusão

Espero que agora você tenha compreendido como utilizar o método `.split()` com strings em Python.

  • Aqui está um resumo deste guia:
  • O método integrado `.split()` em Python divide uma string em uma lista de strings.
  • Utilize `string.split()` para dividir a string em todas as ocorrências do delimitador padrão, o espaço em branco.

Use `string.split(sep,maxsplit)` para dividir a string `maxsplit` vezes, a partir do delimitador `sep`. A lista resultante terá `maxsplit+1` itens.

Como próximo passo, você pode estudar como verificar se strings em Python são palíndromos ou anagramas.