Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Uso no terminal

Bom dia! Estou fiz a instalação da função (VALIDATE_DOCBR) porém quando vou rodar o código ele dar erro na função 'from' e fala que não reconhece a linguagem 'validate_docbr', como posso resolver isso?

INSTALAÇÃO: lucas@lucas-notebook:~/PycharmProjects/pythonProject/pythonProject1/python-brasilidades$ pip install validate-docbr Collecting validate-docbr Downloading validate_docbr-1.8.2-py3-none-any.whl (15 kB) Installing collected packages: validate-docbr Successfully installed validate-docbr-1.8.2

RODAÇÃO NO PYCHARM: /usr/bin/python3.9 /home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/main.py Traceback (most recent call last): File "/home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/main.py", line 1, in from validate_docbr import CPF ModuleNotFoundError: No module named 'validate_docbr'

Process finished with exit code 1

7 respostas

Olá Lucas, tudo bem? Espero que sim!

Ao realizar o import, você precisa escrever a biblioteca validate-docbr com hífen, assim como fez na instalação do pip:

from validate-docbr import CPF

No seu código, a importação está utilizando o undersore ( _ ) ( validate_docbr ) e não o hífen ( - ) ( validate-docbr ) que é o nome correto.

Bons estudos!

Boa tarde João! Então fiz alterações e continua o erro. O meu processador é o Linux (ubuntu), esse pode ser o motivo?

from validade-docbr import CPF

class Cpf:
    def __init__(self, documento):
        documento = str(documento)
        if self.cpf_eh_Valido(documento):
            self.cpf = documento
        else:
            raise ValueError('CPF inválido!!')

    def __str__ (self):
        return self.format_cpf()


    def cpf_eh_Valido(self, documento):
        if len(documento) == 11:
            validador = CPF()
            return validador.validate(cpf)
        else:
            raise ValueError('Quantidade de digitos invalida!!')

    def format_cpf(self):
       mascara = CPF()
       return mascara.mask(self.cpf)

    def __str__(self):
        return self.format_cpf()

/usr/bin/python3.9 /home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/Cpf.py File "/home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/Cpf.py", line 1 from validade-docbr import CPF ^ SyntaxError: invalid syntax

Process finished with exit code 1

Olá Lucas,

Eu havia escrito de forma errada na parte do código, peço desculpas. O correto é from validate-docbr import CPF e não from validade-docbr import CPF. Eu escrevi validade com D ao invés de validate com T.

Bons estudos!

Sim João, eu cheguei acerta isso ai também, porém mesmo assim o código não reconhece (validate-docbr).

solução!

Aproveitando, estou na aula de validando telefones com expressões regex: executo o código e dar erro - fala que a definição group não existe

import re

padrao = "[0-9] [a-z] [0-9]"
texto = "123 1ac2 1cc aa1"
resposta = re.search(padrao, texto)
print(resposta.group())
/usr/bin/python3.9 /home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/main.py
Traceback (most recent call last):
  File "/home/lucas/PycharmProjects/pythonProject/pythonProject1/python-brasilidades/main.py", line 6, in <module>
    print(resposta.group())
AttributeError: 'NoneType' object has no attribute 'group'

Process finished with exit code 1

Olá Lucas,

Quanto ao problema do pacote, parece que é um problema com o Pycharm, o correto é com o underscore mesmo como você havia feito na primeira vez (from validate_docbr import CPF) , pode checar essa outra discussão sobre isso e a solução que outro aluno descobriu.

https://cursos.alura.com.br/forum/topico-modulenotfounderror-no-module-named-validate_docbr-104934

Quanto ao problema do regex, primeiro você deve colocar o padrao sem espaços, adicionando um {2} na frente do [a-z] para o texto poder variar entre 1 a 2 caracteres:

import re

padrao = "[0-9][a-z]{2}[0-9]"
texto = "123 1ac2 1cc aa1"
resposta = re.search(padrao, texto)

print(resposta.group())

O código estava retornando erro nessa parte por tentar encontrar um padrão com espaços entre os dígitos, e ainda assim não teria um caso abaixo com um número, uma letra e outro número consecutivos, retornando resultado 'None', sendo necessário adicionar o {2}.

Bons estudos!

Valeu João! Resolveu meu problema. Tope.