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

Erro no código.

Olá pessoal, quando digito o código abaixo aparece o seguido erro.

questoes_port_sem_code = substituir_codigo(dados_portugues.Questão,
                                          regex_codigo)
questoes_port_sem_code_tag = remover(questoes_port_sem_code, regex_html)

dados_portugues['sem_code_tag'] = questoes_port_sem_code_tag
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_15808\987861854.py in <module>
----> 1 questoes_port_sem_code = substituir_codigo(dados_portugues.Questão,
      2                                           regex_codigo)
      3 questoes_port_sem_code_tag = remover(questoes_port_sem_code, regex_html)
      4 
      5 dados_portugues['sem_code_tag'] = questoes_port_sem_code_tag

~\AppData\Local\Temp\ipykernel_15808\2119011832.py in substituir_codigo(textos, regex)
      3         return regex.sub("CODE",textos)
      4     else:
----> 5         return [regex.sub("CODE", textos) for texto in textos]

~\AppData\Local\Temp\ipykernel_15808\2119011832.py in <listcomp>(.0)
      3         return regex.sub("CODE",textos)
      4     else:
----> 5         return [regex.sub("CODE", textos) for texto in textos]

TypeError: expected string or bytes-like object

Não entendi onde estou errando, porque no resto do notebook funcionou

desde já obrigado

2 respostas
solução!

Olá, Thiago! Beleza?

Tem um pequeno erro na função substituir_codigo, onde o erro aponta a localização.

Na função, você escreveu

def substituir_codigo(textos, regex)
    if type(textos) == str:
        return regex.sub("CODE",textos)
    else:
        return [regex.sub("CODE", textos) for texto in textos]

E no segundo return, o trecho de código regex.sub("CODE", textos) deve ser regex.sub("CODE", texto), porque a função regex.sub() está sendo aplicada a cada elemento da lista textos, mas um a cada vez, utilizando a variável texto como portadora da informação. Portanto, o código deve ser:

def substituir_codigo(textos, regex)
    if type(textos) == str:
        return regex.sub("CODE",textos)
    else:
        return [regex.sub("CODE", texto) for texto in textos]

E é isso que o erro aponta com a linha:

TypeError: expected string or bytes-like object

Era esperado uma string para aplicar a função do regex, mas foi entregue outro objeto, no caso, um iterável.

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

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

muito obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software