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:
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022