Retornar Código IBGE a partir do Nome do Município
Seu pedido de recurso está relacionado a um problema? Por favor, descreva.
Dado o nome de um município, desejo obter o código IBGE correspondente. A busca deve funcionar mesmo sem considerar diferenças de maiúsculas, minúsculas, acentuação e o caractere especial ç (considerando c também).
Por exemplo, ao passar o nome "São Paulo", "sao paulo", ou "São paulo", a função deve retornar "3550308". Também deve considerar "Conceição do Coité" como "Conceicao do Coite".
Descreva a solução que você gostaria
- Uma função
get_code_by_municipality_name, que recebe o nome de um município (string) e retorna o código IBGE correspondente (string). - A função deve ignorar diferenças de maiúsculas, minúsculas, acentos e o caractere especial ç (considerando c também).
- Para nomes de municípios que não existirem na base, a função deve retornar
None. - A saída deve ser formatada como:
"Código IBGE". Exemplo:"3550308".
Descreva alternativas que você considerou
-
Seguir até o passo 8 do guia de contribuição.
-
Como parte do passo 8, criar o arquivo:
brutils-python/brutils/ibge/municipality.py.def get_code_by_municipality_name(municipality_name): # type: (str) -> str | None """ Returns the IBGE code for a given municipality name. This function takes a string representing a municipality's name and returns the corresponding IBGE code (string). The function will handle names by ignoring differences in case, accents, and treating the character ç as c. Args: municipality_name (str): The name of the municipality. Returns: str: The IBGE code of the municipality. - Returns None if the name is not valid or does not exist. Example: >>> get_code_by_municipality_name("São Paulo") "3550308" >>> get_code_by_municipality_name("goiania") "5208707" >>> get_code_by_municipality_name("Conceição do Coité") "2909401" >>> get_code_by_municipality_name("conceicao do Coite") "2909401" >>> get_code_by_municipality_name("Municipio Inexistente") None """ # Implementar a lógica de busca pelo nome do município, lidando com diferenças de acentuação e capitalizaçãoImportar a nova função no arquivo
brutils-python/brutils/__init__.py# IBGE Imports from brutils.ibge.municipality import ( get_code_by_municipality_name, )E adicionar o nome da nova função na lista
__all__do mesmo arquivobrutils-python/brutils/__init__.py:__all__ = [ ... # IBGE get_code_by_municipality_name ] -
Como parte do passo 9, criar o arquivo de teste:
brutils-python/tests/ibge/municipality.py.from unittest import TestCase from brutils.ibge.municipality import get_code_by_municipality_name class TestIBGE(TestCase): def test_get_code_by_municipality_name(self): self.assertEqual(get_code_by_municipality_name("São Paulo"), "3550308") self.assertEqual(get_code_by_municipality_name("rio de janeiro"), "3304557") self.assertEqual(get_code_by_municipality_name("GOIANIA"), "5208707") self.assertEqual(get_code_by_municipality_name("Conceição do Coité"), "2909401") self.assertEqual(get_code_by_municipality_name("conceicao do Coite"), "2909401") self.assertIsNone(get_code_by_municipality_name("Municipio Inexistente")) # Implementar mais casos de teste aqui -
Seguir os passos seguintes do guia de contribuição.
Contexto adicional
- A função deve ser capaz de validar se o nome do município está correto e retornar o código IBGE correspondente, ignorando variações de acentuação e o caractere especial ç (considerando c também).
- Referência de códigos IBGE: https://www.ibge.gov.br/explica/codigos-dos-municipios.php
Oi, pode me dar assign nessa issue?
Feito @ThalesCarl!
I quit. Pode remover meu assign? Pois o outro grupo já começou a trabalhar na issue
Pode me colocar como o responsável?
@CarduCaldeira e @ThalesCarl feito!