Dividir string

Publicado em 2008-11-10 por Vinicius Assef

Quando uma string vem com delimitadores, podemos dividí-la em partes facilmente.

Tudo em uma lista

Em Python é simples separar (dividir, quebrar) uma string em um caractere delimitador. Um uso bastante comum é em listas de contato, como no exemplo abaixo:

>>> texto = "john@example.com,99171-9272,3345-2123"
>>> contatos = texto.split(",")
>>> print (contatos)
['john@example.com', '99171-9272', '3345-2123']

A vírgula é o separador dos campos. Com base nela teremos cada contato em um item diferente na lista contatos, usando o método split().

Variáveis independentes

Outro jeito de separar strings aproveita o "desempacotamento" de listas do Python:

>>> data = "25/03/2015"
>>> (dia, mes, ano) = data.split("/")
>>> print (ano, mes, dia)
2015 03 25

Cada parte virou uma variável diferente: dia, mes e ano. Esse jeito é útil quando conhecemos a estrutura dos dados.

Variáveis e lista

Entretanto, há situações que não queremos ou não podemos ter todos os campos separados, só alguns. Esse outro exemplo lida bem com isso:

>>> texto = "John Lennon,john@example.com,Liverpool,England,1940,1980"
>>> (nome, email, *outros) = texto.split(",")
>>> print (nome, email, *outros)
John Lennon john@example.com ['Liverpool', 'England', '1940', '1980']

Explicando: queremos apenas os primeiros campos. Os restantes não nos interessa. Então dizemos para o Python separar apenas os 2 primeiros campos e jogar o restante na lista outros.

Uma forma mais explícita de dizer que não vamos trabalhar com os outros campos é usando o dummy object:

>>> texto = "John Lennon,john@example.com,Liverpool,England,1940,1980"
>>> (nome, email, *__) = texto.split(",")
>>> print (nome, email)
John Lennon john@example.com

Se você ficou curioso, leia sobre a convenção dummy object usada no Python.

Como vimos, existem várias maneiras de dividir uma string baseando-se em um delimitador. A melhor para o seu caso, vai depender da sua situação.

Vinicius Assef

Eu sou apaixonado por Python e shell script.

Aprenda com seus erros e dê nome certo às coisas.