diff --git a/README.md b/README.md index 686d27d..b546bba 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ False - [CEP](#cep) - [is_valid_cep](#is_valid_cep) - [format_cep](#format_cep) + - [remove_symbols_cep](#remove_symbols_cep) - [generate_cep](#generate_cep) ## CPF @@ -80,6 +81,7 @@ Remove os símbolos de formatação do CPF e retorna somente números. Filtra ap >>> remove_symbols_cpf('000.111.222-33') '00011122233' ``` + ### generate_cpf Gera um CPF válido aleatório. @@ -154,6 +156,16 @@ Formata o CEP. Retorna None se o CEP for inválido. '01310-200' ``` +### remove_symbols_cep + +Remove os símbolos de formatação do CEP e retorna somente números. Filtra apenas os símbolos utilizados para a validação do CEP. Propositalmente não remove outros símbolos. + +```python +>>> from brutils import remove_symbols_cep +>>> remove_symbols_cep('01310-200') +'01310200' +``` + ### generate_cep Gera um CEP válido aleatório. diff --git a/README_EN.md b/README_EN.md index 9d9422f..f1d5621 100644 --- a/README_EN.md +++ b/README_EN.md @@ -46,7 +46,8 @@ False - [generate_cnpj](#generate_cnpj) - [CEP](#cep) - [is_valid_cep](#is_valid_cep) - - [format_cep](#format_cep) + - [format_cep](#format_cep) + - [remove_symbols_cep](#remove_symbols_cep) - [generate_cep](#generate_cep) ## CPF @@ -159,6 +160,18 @@ Format CEP. Returns None if CEP is invalid. '01310-200' ``` +### remove_symbols_cep + +Remove formatting symbols from CEP and return only digits. +It only filters out the symbols used for CEP validation. +It purposefully doesn't remove other symbols. + +```python +>>> from brutils import remove_symbols_cep +>>> remove_symbols_cep('01310-200') +'01310200' +``` + ### generate_cep Generate a valid random CEP. diff --git a/brutils/__init__.py b/brutils/__init__.py index e51068c..839548a 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -14,4 +14,5 @@ is_valid as is_valid_cep, format_cep, generate as generate_cep, + remove_symbols as remove_symbols_cep, ) diff --git a/brutils/cep.py b/brutils/cep.py index cd86408..ecf67a0 100644 --- a/brutils/cep.py +++ b/brutils/cep.py @@ -5,6 +5,16 @@ ############ +def remove_symbols(dirty): # type: (str) -> str + """ + Filters out CEP formatting symbols. Symbols that are not used + in the CEP formatting are left unfiltered on purpose so that + if fails other tests, because their presence indicate that the + input was somehow corrupted. + """ + return "".join(filter(lambda char: char not in ".-", dirty)) + + def format_cep(cep): # type: (str) -> str """ Will format an adequately formatted numbers-only CEP string, diff --git a/tests/test_cep.py b/tests/test_cep.py index a2a2eca..56b12a6 100644 --- a/tests/test_cep.py +++ b/tests/test_cep.py @@ -13,11 +13,22 @@ is_valid, format_cep, generate, + remove_symbols, ) from unittest import TestCase, main class CEP(TestCase): + def test_remove_symbols(self): + assert remove_symbols("00000000") == "00000000" + assert remove_symbols("01310-200") == "01310200" + assert remove_symbols("01..310.-200.-") == "01310200" + assert remove_symbols("abc01310200*!*&#") == "abc01310200*!*&#" + assert ( + remove_symbols("ab.c1.--.3-102.-0-.0-.*.-!*&#") == "abc1310200*!*&#" + ) + assert remove_symbols("...---...") == "" + def test_format_cep(self): with patch("brutils.cep.is_valid", return_value=True) as mock_is_valid: # When cep is_valid, returns formatted cep