Meu nome é Gabriel Saldanha e eu vou te acompanhar nesse curso, onde vamos falar sobre manipulação de strings no Python.
Manipular uma string é você aplicar alguma operação a uma string, ou seja, a um texto, para conseguir extrair desse texto alguma informação relevante para a sua aplicação. Vamos ver um exemplo?
Aqui eu estou na página alura.com.br, se eu fizer uma pesquisa por "Python" você pode perceber que à URL foi adicionado o parâmetro query=python
no final lá no campo de busca, indicando o que buscamos. A nossa aplicação vai justamente manipular uma URL para conseguir extrair o valor dos parâmetros dessa URL.
Para fazer isso vamos utilizar o editor de texto PyCharm e vamos começar entendendo um pouco mais sobre a classe string ou str
do Python e quais são os métodos que ela fornece para nós.
Em seguida vamos utilizar princípios de orientação a objeto para criar a nossa própria classe, o ExtratorURL
, que vai ser responsável pela extração do valor dos parâmetros de uma URL para nós. Essa classe vai conter diversos métodos, alguns responsáveis pela sanitização da URL e também pela validação da URL.
E falando em validação, vamos precisar aprender sobre expressões regulares ou regex, que é uma ferramenta para você conseguir identificar um determinado padrão dentro de um texto ou verificar se o seu texto segue certo formato, como, por exemplo, verificar se uma URL segue um formato https://www.alura.com.br.
Por fim, vamos aprender um pouco mais sobre os métodos especiais do Python, que são esses métodos que começam e terminam com dois underlines, como, por exemplo, o método __len__
, o método __str__
ou o método __eq__
. E veremos como podemos implementar esses métodos nas nossas classes para adicionar algum comportamento específico à nossa classe.
Ao final do curso você vai entender muito bem sobre todos esses tópicos e conseguir aplicar isso em diferentes áreas da programação. Então, vamos lá? Te vejo nos próximos vídeos.
Navegando pela internet você já deve ter percebido que a URL das páginas tem um certo padrão. Aqui, por exemplo, eu estou no Twitter e você pode perceber que na barra de endereço do navegador tem o https://twitter.com
- indicando o domínio ou em qual site eu estou - e o /home
- indicando que eu estou na página inicial do Twitter.
Além disso, você já talvez tenha percebido que, por exemplo, aqui no Twitter, se eu fizer uma busca por "alura", a minha URL é alterada. E vamos copiá-la para o bloco de notas, para conseguirmos visualizar melhor?
https://twitter.com/search?q=alura&src=typed_query
Agora a minha URL está da seguinte maneira: “https://twitter.com
”, indicando o domínio ou o site que eu estou, /search
, indicando que eu estou na página de busca. Além disso, foi adicionado aqui um ponto de interrogação e alguns valores.
Essa parte da URL é o que chamamos de parâmetros da URL, e eles funcionam como se fossem variáveis que são passadas para o nosso programa. Aqui, por exemplo, temos a primeira variável q=alura
, e esse "q" é uma abreviação de query, do inglês, que significa "consulta", ou seja, qual foi a busca ou a consulta que eu fiz. E está dizendo que foi igual a "alura", que foi a busca que eu digitei.
Além disso, na parte dos parâmetros da URL, teremos o "e comercial" (&
), que serve para separar esses parâmetros. Então temos o nosso segundo parâmetro aqui, src
, que é da abreviação de source, do inglês, origem, ou seja, vai indicar para a nossa aplicação qual foi a origem daquela consulta.
E aqui no caso, origem =typed_query
, uma consulta digitada, só dizendo para a aplicação do Twitter que eu digitei o termo "alura" ali. Então nós conseguimos separar nossa URL nessas duas grandes partes, a base e os parâmetros dela.
Suponha então que fomos chamados para fazer uma aplicação de conversão de moeda, uma página de câmbio do banco ByteBank. Como seria a URL nesse caso? Vamos nos basear na URL do Twitter. Temos https://
, o domínio ou o site, bytebank.com
, e a página /cambio?
, certo?. E agora eu preciso dos meus parâmetros.
Para fazer câmbio ou conversão de moeda eu vou precisar saber qual é a moeda de origem, para qual moeda ou qual é a moeda de destino que aquele valor tem que ser convertido e qual a quantidade, quantas unidades da moeda de origem.
Ou seja, podemos ter um parâmetro aqui moedaOrigem=real
, outro parâmetro separado pelo "e comercial" (&
), &moedaDestino=dolar
– eu vou maximizar para conseguirmos ver o bloco de notas todo – e por último &quantidade=100
, indicando que eu quero converter 100 unidades da moeda real para dólar.
http://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100
Para isso precisamos extrair esses valores da URL e é isso que veremos ao longo desse curso. Vamos começar primeiro criando o nosso projeto no PyCharm?
Eu vou abrir o PyCharm e assim que ele carregar ele vai me mostrar a página para eu escolher um projeto ou criar um novo projeto, e no meu caso eu vou clicar aqui em cima, em “New Project”, para criar um novo projeto. Eu vou dar o nome do meu projeto, “extrator-url”, porque vamos extrair valores da nossa URL, e vou clicar em "criar", aqui embaixo.
Assim que esse projeto for criado vamos poder criar o nosso primeiro arquivo, clicando aqui no menu à esquerda em “File > New” e selecionando “Python File”, para criar um novo arquivo Python, o qual eu vou chamar de “main”.
Criamos o nosso primeiro arquivo main.py
e vamos nesse arquivo declarar uma variável URL, e vamos copiar e colar aquela variável do ByteBank aqui mesmo e declará-la como uma string, colocando aspas em volta.
url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"
E agora, só para ver se conseguimos realmente executar esse programa, vamos imprimir na tela a nossa URL escrevendo print(url)
na linha seguinte, clicar aqui no menu superior em “Run > Run” e selecionar o “main” como o arquivo que eu quero executar. Perfeito, você consegue ver aqui na parte de baixo que ele imprimiu a nossa URL na tela.
Então vimos que uma URL, no fim das contas, pode ser representada como uma string, criamos o nosso projeto aqui no PyCharm e vamos usar o PyCharm porque ele vai dar muitas funcionalidades para nós, vai ficar mais fácil de conseguirmos trabalhar aqui com o projeto.
Vimos então que a nossa URL pode ser dividida em duas grandes partes, a base dela e a parte dos parâmetros dela. Vimos que esses parâmetros funcionam também como se fossem variáveis para o nosso programa, onde ele tem certo nome, por exemplo, moedaOrigem=real
, que seria o valor dessa variável.
E temos agora o nosso projeto, podemos começar a trabalhar nele e extrair esses valores para conseguir fazer a conversão da moeda. Na sequência nós vamos ver como utilizar o método de fatiamento para fazer isso.
Até o momento criamos o nosso projeto, entendemos um pouco mais como funciona o formato de uma URL, sabendo que ela é dividida entre duas grandes partes, a primeira que vem antes do ponto de interrogação, que é o que estamos chamando de base da URL, e essa parte que vem depois do ponto de interrogação, que é o que estamos chamando dos parâmetros da URL.
Agora queremos dividir essas duas partes e salvá-las em duas variáveis diferentes usando o Python. E para isso primeiro precisamos aprender sobre fatiamento, o que é o fatiamento?
Vamos abrir o Python Console e conseguimos abrir isso clicando nesse menu inferior, à esquerda, em “Python Console”, e essa é mais uma das funcionalidades que o PyCharm, nossa IDE, fornece, onde você consegue escrever uma instrução e já executá-la ao mesmo tempo, sem ter que salvar o arquivo e depois executar. Por exemplo, eu posso escrever aqui no console print(‘Alura’)
e ele já imprime "Alura" para mim na tela.
O que é o fatiamento? O fatiamento é uma funcionalidade do Python onde você consegue extrair um pedaço de uma string. Como assim? Finge que temos uma variável, por exemplo, vou chamá-la de texto
, e vou dar para essa variável o valor de uma string texto = ’abcde’
.
Isso aqui vai ser uma string com cinco caracteres, o ‘abcde’
, e cada caractere tem sua própria posição, por exemplo, começando no 0, o a vai ser o caractere na posição 0, o b na posição 1, o c na posição 2, d na posição 3, o e na posição 4 e por aí vai.
Isso significa que eu posso, por exemplo, acessar um dos caracteres através da posição. Para eu fazer isso eu utilizo os colchetes. Por exemplo, aqui em texto
eu coloco o texto na posição texto[0]
e ao apertar “Enter” ele me retornou o caractere ‘a’
, porque é aquele caractere que está na posição 0.
>>> texto = 'abcde'
>>> texto[0]
>>> 'a'
O fatiamento você passa duas posições para a sua string original e essas duas posições serão as posições de início e de fim de onde você quer extrair, ou seja, o que você quer extrair daquela string?
Por exemplo, se eu quiser extrair o "a" e o "b", eu vou ter que passar a posição inicial 0 e a sintaxe do fatiamento é a seguinte, você coloca dois pontos e a posição final, por exemplo, 1: texto[0:1]
Será que isso vai funcionar? Vamos ver o que ele vai me retornar ao apertar “Enter”. E ele continuou retornando só a letra ‘a’
.
>>> texto = 'abcde'
>>> texto[0]
>>> 'a'
>>> texto[0:1]
>>> 'a'
Isso acontece porque o fatiamento tem uma característica onde o primeiro argumento dele, no nosso caso foi o 0, é inclusivo, mas o segundo argumento, o argumento final, é exclusivo, ou seja, ele não vai incluir o caractere naquela posição. Então aqui, na verdade, estamos falando: “Eu quero do 0 até a posição exatamente antes do 1, que também é a 0”, logo nós acabamos só retornando a letra ‘a’
.
Se eu quiser "a" e "b", sendo que o "b" está na posição 1, eu preciso buscar por texto
, posição 0:
inicial e a posição final exclusiva 2
, ou seja, até antes do 2, logo, a posição 1, texto[0:2]
. E assim ele me retorna ’ab’
.
>>> texto = 'abcde'
>>> texto[0]
'a'
>>> texto[0:1]
'a'
>>>texto[0:2]
'ab'
Com isso talvez já dê para começarmos a entender como vamos extrair da nossa URL original a primeira parte dela, que é tudo isso que vem antes do ponto de interrogação, https://bytebank.com/cambio?
, e a segunda parte, que são os parâmetros que vêm depois do ponto de interrogação, moedaOrigem=real&moedaDestino=dólar&quantidade=100
. Então vamos lá.
Primeiro, deixa eu fechar o nosso Python Console e eu vou fechar também nossa árvore de arquivos na aba lateral, para ficar mais fácil de visualizarmos. E para simplificar um pouco eu vou encurtar a nossa URL original, eu vou tirar o ‘https’ e eu vou deixar só um parâmetro, vou tirar os outros dois parâmetros aqui, moedaDestino
e quantidade
, deixando só o parâmetro moedaOrigem
.
url = "bytebank.com/cambio?moedaOrigem=real"
print(url)
Agora o que queremos? Eu quero pegar esse primeiro pedaço aqui, bytebank.com/cambio
. Para isso você concorda que vamos ter que ir justamente até o ponto de interrogação e excluindo o ponto interrogação? Ou seja, o nosso fatiamento vai ser alguma coisa como url[]
, partindo do 0 e indo até, vamos ter que contar aqui, "b" na posição 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 e 19 caracteres até o ponto de interrogação.
E eu posso colocar o 19
aqui, url_base = url[0:19]
ele não vai incluir o ponto interrogação e é justamente o que eu quero, eu quero pegar só essa primeira parte, bytebank.com/cambio
, sem o ponto de interrogação. E vamos salvar isso numa variável, por exemplo, url_base
. Perfeito.
Vamos imprimir para ver se ela está retornando o que esperamos? Eu vou salvar, “Ctrl + S” para salvar e vou executar apertando aqui em “Run”, no menu superior, e vamos rodar esse programa.
url = "bytebank.com/cambio?moedaOrigem=real"
print(url)
url_base = url[0:19]
print(url_base)
Primeiro ele imprimiu a URL toda, que é o que a linha 2 está fazendo, print URL, e depois imprimiu bytebank.com/cambio
, que é o que esperávamos. E agora queremos a parte dos parâmetros.
Vamos criar outra variável url_parametros
e ela vai receber o fatiamento da minha URL original a partir de certa posição. E aqui nós sabemos que a interrogação está na posição 19, então se o primeiro argumento do fatiamento é inclusivo, ou seja, ele vai incluir o caractere naquela posição, eu não posso passar 19
aqui, eu tenho que passar a posição 20
.
Então vou começar na posição 20, que seria o ‘m’ de moedaOrigem
e vou até qual posição? 20 é esse, então 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35. Eu posso colocar o 35 aqui, mas lembrando, como ele é exclusivo para o segundo argumento do fatiamento, eu preciso colocar o 35 mais um, logo, o 36. url_parametros = url[20:36]
e assim ele vai incluir todo o meu parâmetro.
url = "bytebank.com/cambio?moedaOrigem=real"
print(url)
url_base = url[0:19]
print(url_base)
url_parametros = url[20:36]
print(url_parametros)
E vamos imprimir para vermos se conseguimos buscar isso mesmo, vou clicar em “Run”, executar aqui o “main”. Primeira coisa, imprimiu nossa URL toda. A segunda, o nosso segundo print imprimiu bytebank.com/cambio
, que é a base da URL, e por último o terceiro print, que está imprimindo moedaOrigem=real
, que é o nosso parâmetro.
Assim então nós conseguimos quebrar nossa URL utilizando o fatiamento e salvar as duas partes dela, a URL base e a URL parâmetros em duas variáveis separadas.
Uma coisa interessante de falar em relação ao fatiamento é que ele não altera a URL original, ou seja, eu estou fatiando, mas na verdade eu pego aquela fatia e faço uma cópia dela, eu não altero aquela minha URL original.
Tanto que se depois de tudo isso eu der um print(url)
de novo, você vai perceber que ela continua sem ter sido alterada, olha aqui embaixo, bytebank.com/cambio
e está tudo aqui, o ponto de interrogação e os nossos parâmetros.
bytebank.com/cambio?moedaOrigem=real
Então o fatiamento funciona assim e essa é uma das características das strings no Python, porque elas são imutáveis, depois de serem criadas, elas não podem ser alteradas, você só pode geralmente extrair pedaços dela, que na verdade vão ser novas cópias a partir dela.
E para entender um pouco mais sobre mutabilidade, eu vou deixar o link de artigo acessível aqui falando um pouco mais sobre como a imutabilidade funciona no Python, se você quiser se aprofundar um pouco mais nesse tema.
Vimos que fatiamos nossa string baseando na posição do nosso ponto de interrogação, mas e se essa posição mudasse? Por exemplo, se aqui tivesse o https://
o nosso ponto interrogação não estaria mais na posição 19, então como conseguimos encontrar essa posição? Isso nós veremos na aula a seguir.
O curso String em Python: extraindo informações de uma URL possui 109 minutos de vídeos, em um total de 48 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.