1
resposta

Agrupando informações dos pacientes

Minha dúvida é a respeito do código que está como resposta do exercício.

padrao = r'(\w+) (\w+) - (\d{4})' 

Ao meu ver, essa não é a melhor solução para o problema, visto que se o nome fosse: 1995João Pedro599, ele retornaria 1995João Pedro 599. Formatos incompatívels com nomes

Meu código:

import re

print("Example: Monalisa Silva - 1995")
pacient_name = str(input("Insert your full name and age: "))

first_name_pattern = r"[A-Za-z]*"
last_name_pattern = r"\s[A-Za-z]+" # \s corresponde a qualquer espaço em branco.
age_pattern = r"\d{4}"

first_name_result = re.search(first_name_pattern,pacient_name,re.IGNORECASE)
last_name_result = re.findall(last_name_pattern,pacient_name,re.IGNORECASE)
age_result = re.search(age_pattern,pacient_name)

if first_name_result and last_name_result and age_result:
    print(f"First name: {first_name_result.group()}")
    for last_name in last_name_result:
        print(f"Last name: {last_name}".title())
    print(f"Age: {age_result.group()}")
         
else: 
    print(f"{pacient_name} is not valid!")
1 resposta

Olá Felipe! Como vai?

O formato esperado é "PrimeiroNome Sobrenome - Ano". Para garantir que o padrão regex capture corretamente essas informações, podemos ajustar o padrão para assegurar que ele corresponda exatamente ao formato desejado. Vou sugerir uma pequena modificação no seu código:

import re

print("Example: Monalisa Silva - 1995")
pacient_name = str(input("Insert your full name and age: "))

# Ajustando o padrão regex para corresponder exatamente ao formato "PrimeiroNome Sobrenome - Ano"
pattern = r'^([A-Za-z]+) ([A-Za-z]+) - (\d{4})$'

match = re.match(pattern, pacient_name)

if match:
    first_name = match.group(1)
    last_name = match.group(2)
    year = match.group(3)
    
    print(f"First name: {first_name}")
    print(f"Last name: {last_name}")
    print(f"Year of Birth: {year}")
else:
    print(f"{pacient_name} is not valid!")

Neste ajuste, utilizei o re.match() com um padrão regex que garante que o nome e o sobrenome sejam compostos apenas por letras e que estejam separados por um espaço, seguido de um hífen e um ano de quatro dígitos. Isso deve ajudar a garantir que o formato dos dados seja o esperado.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.