Python split: separar strings em substrings e retornar listas!

O método Python split é uma das funções disponíveis em Python utilizada para a manipulação de strings. Na prática, ele permite dividir o conteúdo da variável de acordo com as condições especificadas em cada parâmetro da função ou com os valores predefinidos por padrão.  

As pessoas programadoras precisam entender como esse recurso funciona, pois ele é útil para diversas finalidades. Além de separar um determinado conteúdo de uma string original, podemos fazer o mesmo a partir do conteúdo de um arquivo externo de texto. Para demonstrar como esse método pode ser utilizado, preparamos este post que contém os seguintes tópicos:

Continue com a gente e boa leitura!

Python split: o que é e para que serve esse método?

Em Python, uma string é formada por um conjunto de caracteres delimitado por uma ou duas aspas. Portanto, podemos declarar uma variável do tipo string dessa forma:

nome = “João Paulo”

Ou:

nome = ‘João Paulo’

Em Python, o tamanho de uma string não pode ser definido como ocorre em outras linguagens de programação, em que podemos determinar que uma string pode ter 10 caracteres, por exemplo. Portanto, nas instruções acima temos uma string de 10 caracteres porque esse é o tamanho correspondente ao conteúdo atribuído a ela.

Uma vez declarada, a string não pode ser modificada, pois na linguagem Python o tipo string é imutável. Portanto, qualquer método utilizado sobre uma string, como o split(), retornará o conteúdo correspondente em uma nova variável.

A função split() Python, que significa divisão, é um método utilizado para dividir o conteúdo de uma string. Ela contém alguns parâmetros para auxiliar a forma de separação de seu conteúdo. O resultado dessa divisão, que na opção padrão é feita sempre que a função encontrar um caractere de espaço, é retornado no formato de uma lista com uma ou mais substrings.

Qual é a sintaxe?

A sintaxe do método split() contém dois parâmetros opcionais. Sua sintaxe é:

string.split(separator, maxsplit)

Em que:

  • string: corresponde ao nome da variável que servirá de base para a divisão;
  • separator: indica o caractere utilizado como separador da string;
  • maxsplit: representa a quantidade máxima de divisões realizadas.

Como mencionamos, o método split() pode ser executado sem nenhum parâmetro. Nesse caso, o caractere separador será o espaço (valor padrão) e a quantidade máxima de divisão será até que o último caractere seja lido. Veja um exemplo:

nome = "João Paulo da Silva"
print(nome.split())
#resultado ['João', 'Paulo', 'da', 'Silva']

Portanto, se aplicarmos a função split() na variável “nome”, teremos como retorno uma lista com quatro strings. Perceba que o caractere de espaço, que é utilizado como divisor, não retorna como um elemento da lista.

Conheça os parâmetros do método split

Como mencionamos, o método split() contém dois parâmetros para determinar como será realizada a separação do conjunto de caracteres da string. Confira cada um deles a seguir.

Separator

O separator corresponde ao caractere que será utilizado como identificador do ponto de separação do conteúdo da string. Esse parâmetro não é obrigatório. Portanto, se nada for informado, o compilador entenderá que a divisão será feita sempre que for encontrado um caractere de espaço.

Podemos utilizar outro caractere para a divisão, como a vírgula, a barra, etc., que deve ser escrito entre aspas simples ou dupla. Veja um pequeno exemplo:

nomes = "João Paulo/Maria Paula/Ana Beatriz/José Pedro"
print(nomes.split('/'))
#resultado: ['João Paulo', 'Maria Paula', 'Ana Beatriz', 'José Pedro']

Perceba que, apesar de haver o caractere de espaço na string (na separação dos nomes compostos), ele não foi utilizado como separador, pois indicamos a barra para essa finalidade. Por isso, o resultado apresentado foi uma lista com os quatro nomes contidos na variável.

Vale ressaltar que o caractere utilizado como separador será eliminado da lista de retorno. Portanto, perceba que não há a exibição da barra em nenhum elemento da lista. 

Maxsplit

O parâmetro maxsplit indica a quantidade de vezes em que a string será dividida. O valor padrão é “-1”. Isso significa que a divisão será feita enquanto houver o caractere separador e até que toda a string seja percorrida.

Apesar de o parâmetro separator ser opcional, ele será obrigatório se quisermos utilizar o parâmetro maxsplit. Entretanto, podemos declará-lo como “None”, pois ele representará o valor padrão, ou seja, o caractere de espaço. Isso porque o método split() contém dois parâmetros e se informarmos apenas um, ele retornará um erro de execução. Veja um exemplo:

nome = "João Paulo Menezes da Silva"
print(nome.split(None, 2))
#resultado: ['João', 'Paulo', 'Menezes da Silva']

print(nome.split(" ", 2))
#resultado: ['João', 'Paulo', 'Menezes da Silva']

print(nome.split(2))
'''
resultado: 
    print(nome.split(2))
TypeError: must be str or None, not int
'''

Outra observação importe sobre o parâmetro maxsplit, é que após ele dividir a string original pela quantidade de vezes determinada, todo o restante da string fará parte do resultado como um único elemento da lista. Por isso, no nosso exemplo temos “João” e “Paulo” separados e “Menezes da Silva” em um único elemento.

Exemplos de uso do método split

O método split() pode ser utilizado de diferentes maneiras. Confira alguns exemplos práticos de como utilizar essa função.

Separar strings com ocorrências de um caractere específico

Como mencionamos, podemos utilizar diferentes tipos de caracteres para separarmos uma string, como uma vogal ou uma consoante. Veja um exemplo:

numeros = "123x124x125x126"
print(numeros.split("x"))
#resultado: ['123', '124', '125', '126']

No código acima, utilizamos o caractere “x” para indicar o ponto de separação da string.

Separar strings que contenham o caractere de nova linha ou tabulação

Existe a possibilidade de a string original ter em seu conteúdo os caracteres que indicam uma nova linha (“\n”). Portanto, podemos utilizar o método split() para identificar as quebras de linha e transformar o resultado em uma lista. Veja um código de exemplo:

nomes = "Maria Cecília\nCláudia Rodrigues\nJoão Paulo"
print(nomes)
'''
Resultado da exibição do conteúdo original:
Maria Cecília
Cláudia Rodrigues
João Paulo
'''

print(nomes.split("\n"))
#Resultado após o split(): ['Maria Cecília, 'Cláudia Rodrigues', 'João Paulo']

Dividir a string em tamanhos definidos

Ao utilizar o parâmetro maxsplit, perceba que o número de elementos da lista será sempre o número de divisões mais 1 — se houver o separador em quantidade suficiente para isso. Portanto, se tivermos uma string com o maxplit definido como 2, teremos como retorno uma lista com 3 elementos. Veja alguns exemplos:

linguagens = "Linguagens de programação;Python;C;JavaScript;Ruby"
print(linguagens.split(';',0))
#resultado: ['Linguagens de programação;Python;C;JavaScript;Ruby']

print(linguagens.split(';',1))
#resultado: ['Linguagens de programação', 'Python;C;JavaScript;Ruby']

print(linguagens.split(';',2))
#resultado: ['Linguagens de programação', 'Python', 'C;JavaScript;Ruby']

print(linguagens.split(';',3))
#resultado: ['Linguagens de programação', 'Python', 'C', 'JavaScript;Ruby']

print(linguagens.split(';',4))
#resultado: ['Linguagens de programação', 'Python', 'C', 'JavaScript', 'Ruby']

print(linguagens.split(';',9))
#resultado: ['Linguagens de programação', 'Python', 'C', 'JavaScript', 'Ruby']

Perceba que se indicarmos o maxsplit igual a 0, o resultado será o de apenas um elemento na lista, que corresponde ao valor original. No último comando, definimos o maxsplit igual a 9 e tivemos como retorno uma lista com apenas 5 elementos: [‘Linguagens de programação’, ‘Python’, ‘C‘, ‘JavaScript‘, ‘Ruby‘], pois não existe mais a possibilidade de dividir a string original.

Atribuir os valores da lista a variáveis diferentes

Já sabemos que, por padrão, a função split() retorna uma lista com os elementos divididos. Entretanto, podemos atribuir o resultado da divisão em diferentes variáveis do tipo string, que funcionam como elementos de uma lista. Veja um exemplo:

dados = "Maria Cláudia;23;Desenvolvedora Web"
nome,idade,profissao = dados.split(";")
print(nome)
#resultado: Maria Cláudia

print(idade)
#resultado: 23

print(profissao)
#resultado: Desenvolvedora Web

print(type(nome))
#resultado: <class 'str'>
print(type(idade))
#resultado: <class 'str'>
print(type(profissao))
#resultado: <class 'str'>

Perceba que temos três informações separadas por ponto e vírgula na variável “dados”. Portanto, criamos as variáveis “nome”, “idade” e “profissão” para receberem os valores correspondentes à divisão, que são: “Maria Cláudia”, 23 e “Desenvolvedora Web”. Dessa forma, cada uma receberá um elemento da lista e cada variável será do tipo string.

Entretanto, é preciso atenção em relação à quantidade de elementos a serem separados, pois caso não seja o valor correto, o compilador retornará um erro de execução. Veja abaixo:

dados = "Maria Cláudia;23;Desenvolvedora Web"
nome,idade = dados.split(";")
print(nome)
print(idade)
'''
resultado:
  nome,idade = dados.split(";")
ValueError: too many values to unpack (expected 2)
'''

Separar dados de um arquivo externo

Existem diversas formas de processar as informações extraídas de arquivos externos. Uma delas é por meio do método split(), pois podemos indicar um caractere de separação para dividir os dados e obter o conteúdo necessário. Veja um exemplo:

arquivo = open("texto.txt", "r")
conteudo = arquivo.read()
print(conteudo)
'''
Resultado:
Primeira linha.
Segunda linha.
Terceira linha.
'''

print(conteudo.split("\n"))
'''
Resultado:
['Primeira linha.', 'Segunda linha.', 'Terceira linha.']
'''
arquivo.close()

No código fonte acima, criamos um arquivo chamado “texto.txt” e utilizamos o comando open() com a flag “r” para indicar que ele será utilizado para leitura. A seguir, usamos o comando read() para obter os dados internos e exibimos o valor na tela apenas para demonstrar o seu conteúdo.

Por fim, utilizamos o método split() e indicamos como separador os caracteres de nova linha “\n”. Assim, ao processarmos o código, o conteúdo do arquivo será inserido em uma lista com três elementos.

Veja outro algoritmo de exemplo com arquivos do tipo CSV — Comma Separated Values — que significa valores separados por vírgula e são utilizados, por exemplo, para exportar dados de planilhas eletrônicas como o Excel.

arquivo_csv = open("numeros.csv", "r")
dados = arquivo_csv.read()
print(dados)
'''
exibe o conteúdo original do arquivo numeros.csv
resultado: 
10;20;30;40;50;60;80;90;100
'''

print(dados.split(";"))
'''
resultado:
['10', '20', '30', '40', '50', '60', '80', '90', '100']
'''
arquivo_csv.close()

No exemplo acima, seguimos a mesma lógica de programação do exemplo anterior. A diferença é que utilizamos o separador ponto e vírgula para indicar o caractere de divisão do conteúdo.

O método Python split() é utilizado para dividir o conteúdo de uma string em uma lista com um ou vários elementos. Ele contém dois parâmetros que ajudam a determinar com maior precisão como a divisão será feita. Dessa forma, podemos utilizar o recurso de inúmeras formas, inclusive para dividir o conteúdo extraído de arquivos externos no formato .txt e .csv.

Gostou do nosso conteúdo sobre como utilizar a função split() Python? Então, confira nosso post sobre tuplas em Python e entenda como utilizar essa estrutura de dado!