1
resposta

Otimização das funções

Como faço para juntar estas duas funções em uma só? Posso fazer isso? Acredito que o código ficaria muito mais limpo. As funções são as seguintes:

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 essa aqui:

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

Tentei fazer uma aqui, mas não deu muito certo :'(. Como eu acerto isso?

def limpar_tag_code(textos,regex):
  regex_html = re.compile(r'<.*?>')
  if type(textos) == str:
    texto_com_tag = regex.sub('CODE',textos)
  else:
    texto_com_tag = [regex.sub('CODE', texto) for texto in textos]
  if type(texto_com_tag) == str:
    return regex_html.sub('',texto_com_tag)
  else:
    return [regex_html.sub('', texto) for texto in texto_com_tag]
1 resposta

Olá, Edgard! Tudo bem com você?

Primeiramente gostaria de pedir desculpas pela demora em retornar.

Testei a função enviada por você e obtive o mesmo resultado que o instrutor, logo creio que sua função não esteja errada. Você poderia colocar a sua saída para conferirmos e dizer qual linha do DataFrame foi utilizada?

Refatorei a função para uma forma mais "limpa" que executa a mesma rotina que a enviada por você. Segue o código:

# início do código

regex_html = re.compile(r"<.*?>")
regex_codigo = re.compile(r"<code>(.|(\n))*?</code>")

def limpar_tag_code(textos, regex_tag, regex_code):
    if type(textos) == str:
        texto_sem_code = regex_code.sub("CODE", textos)
        return regex_tag.sub("", texto_sem_code) 
    else:
        texto_sem_code = [regex_code.sub("CODE", texto) for texto in textos] 
        return [regex_tag.sub("", texto) for texto in texto_sem_code]

Realize os teste nessa função enviada que você também obterá o mesmo resultado do instrutor. Caso ainda persista alguma dúvida pode nos retornar aqui mesmo.

Espero ter ajudado.

:)

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