Curso
Se você quer fazer nosso curso gratuito Intro to R, aqui está o link.
Extraindo valores numéricos de strings
Extrair números de strings é uma tarefa comum, principalmente ao trabalhar com dados não estruturados ou arquivos de log.
Suponha que você tenha a seguinte string: 'the recipe calls for 6 strawberries and 2 bananas'.
Seria útil extrair o 6 e o 2 dessa string para usar depois ao comparar a proporção de morangos para bananas.
Ao usar uma expressão regular para extrair vários números (ou, mais precisamente, vários matches do padrão), você pode usar a função re.findall(). O Dan não falou disso no vídeo, mas é simples de usar: você passa um padrão e uma string para re.findall(), e ela retorna uma lista com os matches.
Instruções
- Importe
re. - Escreva um padrão que encontre todos os números na seguinte string:
'the recipe calls for 10 strawberries and 1 banana'. Para isso:- Use a função
re.findall()e passe dois argumentos: o padrão, seguido da string. \dé o padrão para encontrar dígitos. Coloque um+em seguida para casar o elemento anterior uma ou mais vezes. Isso garante que10seja visto como um único número, e não como1e0.
- Use a função
- Imprima os matches para confirmar que sua expressão regular encontrou os valores
10e1.
# Importe o módulo de expressões regulares
____
# Encontre os valores numéricos: matches
matches = re.findall('____', '____')
# Imprima os matches
print(____)
# Importe o módulo de expressões regulares
import re
# Encontre os valores numéricos: matches
matches = re.findall('\d+', 'the recipe calls for 10 strawberries and 1 banana')
# Imprima os matches
print(matches)
Ex().test_import('re')
Ex().test_correct(test_object('matches'), test_function('re.findall'))
Ex().test_function('print')
success_msg('Excelente trabalho — sua expressão regular extraiu corretamente os valores numéricos 10 e 1 da string!')
- Use o comando
import xpara importar o módulox. - O primeiro argumento de
re.findall()deve ser\d+, e o segundo argumento deve ser a string:'the recipe calls for 10 strawberries and 1 banana'. - Use a função
print()fornecida para imprimirmatches.
Se ficou claro, siga para o próximo exercício! Se não, aqui vai um vídeo de visão geral.
Vídeo de visão geral sobre como usar expressões regulares para limpar strings em Python
Casamento de padrões
Neste exercício, você vai continuar praticando suas habilidades com expressões regulares. Para cada string fornecida, sua tarefa é escrever o padrão apropriado para casá-la.
Instruções
- Escreva padrões para casar:
- Um número de telefone no formato
xxx-xxx-xxxx. Você já fez isso em um exercício anterior. - Uma string no formato: um cifrão, um número arbitrário de dígitos, um ponto decimal, 2 dígitos.
- Use
\$para casar o cifrão,\d*para casar um número arbitrário de dígitos,\.para casar o ponto decimal e\d{x}para casarxdígitos.
- Use
- Um número de telefone no formato
- Uma letra maiúscula seguida por um número arbitrário de caracteres alfanuméricos.
- Use
[A-Z]para casar qualquer letra maiúscula seguida de\w*para casar um número arbitrário de caracteres alfanuméricos.
- Use
import re
# Escreva o primeiro padrão
pattern1 = bool(re.match(pattern='____', string='123-456-7890'))
print(pattern1)
# Escreva o segundo padrão
pattern2 = bool(re.match(pattern='____', string='$123.45'))
print(pattern2)
# Escreva o terceiro padrão
pattern3 = bool(re.match(pattern='____', string='Australia'))
print(pattern3)
# Escreva o primeiro padrão
pattern1 = bool(re.match(pattern='\d{3}-\d{3}-\d{4}', string='123-456-7890'))
print(pattern1)
# Escreva o segundo padrão
pattern2 = bool(re.match(pattern='\$\d*\.\d{2}', string='$123.45'))
print(pattern2)
# Escreva o terceiro padrão
pattern3 = bool(re.match(pattern='[A-Z]\w*', string='Australia'))
print(pattern3)
Ex().test_correct(test_object('pattern1'), test_function('re.match', index=1))
Ex().test_function('print', index=1)
Ex().test_correct(test_object('pattern2'), test_function('re.match', index=2))
Ex().test_function('print', index=2)
Ex().test_correct(test_object('pattern3'), test_function('re.match', index=3))
Ex().test_function('print', index=3)
success_msg("Excelente! Você está dominando os fundamentos de como escrever expressões regulares!")
- Há três componentes no primeiro padrão que sua expressão regular precisa casar:
xxx,xxxexxxx. Os dois primeiros são casados por\d{3}, enquanto o último é casado por\d{4}. Cada componente deve ser separado por um-.
Se quiser aprender mais com este curso, aqui está o link.
Confira o Python String Tutorial da DataCamp.
