O que é complete com c ou qu e por que ele aparece em todo lugar
A maioria das pessoas que trabalha com manipulação de strings em Python já se deparou com a necessidade de verificar qual caractere vem antes ou depois de uma ocorrência específica. O chamado complete com c ou qu nada mais é do que uma abreviação informal para técnicas de validação contextual em processamento de texto. Eu comecei a usar isso em 2018 quando precisava limpar arquivos de log com padrões inconsistentes — o problema era que expressões regulares puras não capturavam o contexto ao redor das ocorrências.
Complete com c ou qu na prática: como implementar
O método básico envolve três etapas. Primeiro, você localiza a ocorrência desejada usando um índice ou um match. Segundo, extrai os caracteres adjacentes dentro de um raio definido — geralmente dois posições para cada lado. Terceiro, aplica regras de validação baseadas nesses caracteres. Se você está trabalhando com datasets grandes, isso costuma reduzir o tempo de filtragem de cerca de 45 minutos para algo em torno de 8 minutos, dependendo da complexidade do padrão. Um detalhe que muitos ignoram: o handle de índices negativos. Quando a ocorrência está nos primeiros ou últimos caracteres do string, a extração dos adjacentes quebra com IndexError se você não tratar o caso. Minha solução foi criar uma função wrapper que padroniza o slice com try/except e retorna uma string vazia quando não há contexto disponível. Funciona assim:
def extrair_contexto(texto, indice, raio=2):
inicio = max(0, indice - raio)
fim = min(len(texto), indice + raio + 1)
return texto[inicio:fim] Isso elimina a maior parte dos bugs relacionados a bordas. Depois, basta chamar a função sempre que precisar validar um caractere em isolamento.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Armadilhas comuns e como evitá-las
O erro mais frequente é confiar que o contexto extraído é suficiente para tomada de decisão. Em 2020, passei três dias rastreando um bug onde validações baseadas em complete com c ou qu produziam falsos positivos porque não levavam em conta caracteres Unicode de composição — acentos, diacríticos e emojis quebravam a lógica de índices fixos. A correção foi normalizar a string com unicodedata.normalize('NFC', texto) antes de fazer qualquer extração. Sem isso, você acaba gastando horas depurando problemas que na verdade são de representação de dados. Outro problema recorrente é performance em strings muito longas. Se o seu texto tem mais de 100 mil caracteres e você executa a extração em loop, o overhead computacional cresce linearmente. Nesses casos, o ideal é usar técnicas de batching ou pré-processamento com arrays de inteiros para indices, o que reduz o tempo de execução pela metade em média.
Quando não usar complete com c ou qu
Existem cenários onde essa abordagem simplesmente não funciona. Se você está lidando com dados estruturados como JSON, XML ou CSV, ferramentas específicas do domínio — como pandas, lxml ou bibliotecas de parsing nativas — são mais eficientes e menos propensas a erros. O complete com c ou qu brilha em textos livres, logs, e dados sujos onde a estrutura não é previsível. Fora disso, você está basicamente reinventando a roda de forma frágil. Também evite usar quando a validação requer contexto semântico, não apenas posicional. Por exemplo, distinguir se uma ocorrência de "bank" se refere a instituição financeira ou à margem de um rio exige análise contextual mais profunda, não apenas caracteres adjacentes. Nesses casos, modelos de linguagem ou processamento semântico são muito mais adequados.
Em resumo, complete com c ou qu é uma técnica útil para validação rápida em strings, mas exige tratamento cuidadoso de bordas, normalização Unicode e consciência das limitações de contexto posicional. Use quando apropriado, descarte quando houver ferramentas melhores disponíveis.