Quebrando uma string e removendo espaços extras (Python)

Você recebe uma string que possui vários valores separados por vírgula (ou qualquer outro caractere), divide ela e fica com um vetor cheio de valores que podem ou não possuir um espaço antes ou depois da string. Nestes casos, você faz um segundo passo, que é remover os espaços de cada um dos valores do seu vetor. No exemplo deste post, vou mostrar como fazer estes dois passos de uma vez.

 

Se você está pensando que o segundo passo pode ser evitado apenas solicitando que o usuário não utilize espaços entre os valores, então você está delirando. Não confie na boa vontade ou memória do usuário. É sua responsabilidade garantir que os dados lidos estarão no formato que você precisa. (OK, pode não ser sua obrigação, mas é uma boa prática…)

Deixando a filosofia de lado, vamos ao exemplo prático…

Vamos demonstrar o problema:

#Variables...
foods = "bacon, meat, pork chop, landjaeger, hamburger"
food_arr = []

#Step00: Just to show the problem...
print(foods.split(","))

No código acima, quebramos a string e a transformamos em um vetor e jogamos este resultado na função print. Isso vai gerar o seguinte output:

['bacon', ' meat', ' pork chop', ' landjaeger', ' hamburger']

Salvo pelo primeiro item, os outros possuem espaços extras e precisamos remove-los.

 

O modo ‘demorado’ de fazer estas operações seria assim:

#Variables...
foods = "bacon, meat, pork chop, landjaeger, hamburger"
food_arr = []

#Step00: Just to show the problem...
print("old:\t{0}".format(foods.split(",")))


#Step 01: Split the string.
for food in foods.split(","):
    #Step 02: Removing extra spaces.
    food_arr.append(food.strip())


#Final Step: Printing result...
print("new:\t{0}".format(food_arr))

No fonte acima, repetimos a demonstração do problema para conseguir compara-la com a resolução. O passo 01 é bem simples: quebrar a string (.split(“,”) e jogar o resultado em um for. O segundo passo é remover os espaços extras (.strip() e incluir o resultado desta remoção no vetor).
(Este exemplo está no meu GitHub)

Simples, certo? OK, são só 2 linhas de código, mas podemos reduzir isso para apenas 01 linha de código.

 

Agora vamos para o exemplo mais otimizado:

#Variables...
foods = "bacon, meat, pork chop, landjaeger, hamburger"

#Step00: Just to show the problem...
print("old:\t{0}".format(foods.split(",")))


#Step 01: Split the string and removes the spaces.
food_arr = [food.strip() for food in foods.split(',')]


#Final Step: Printing result...
print("new:\t{0}".format(food_arr))

Neste script, repetimos a demonstração do problema, mas resolvemos ele utilizado a list comprehension do Python. O que está sendo feito no passo 01 deste exemplo é o mesmo que foi feito nos passos 01 e 02 do exemplo anterior: A string está sendo transformada em um vetor e cada elemento deste vetor está sendo tratado (removendo os espaços extras). O retorno destas operações é um vetor (list), como é indicado pelos [] que estão em volta dos comandos.

(Este exemplo está no meu GitHub)

 

Espero ter ajudado.

 

Referência:

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Python and tagged , , .