Tenho duas listas:
- uma lista de cerca de 750 mil "frases" (sequências longas)
- uma lista de cerca de 20 mil "palavras" que eu gostaria de excluir das minhas 750 mil frases
Então, eu tenho para percorrer 750 mil frases e realizar cerca de 20 mil substituições, mas SOMENTE se minhas palavras forem realmente "palavras" e não fizerem parte de uma sequência maior de caracteres.
Estou fazendo isso pré-compilando minhas palavras para que elas sejam flanqueadas pelo metacaractere de limite de palavra :
compiled_words = [re.compile(r"" + word + r"") for word in my20000words]
Então eu percorro meu " sentenças":
import re para sentença em sentenças: para palavra em palavras_compiladas: sentença = re.sub(palavra, "", sentença) # coloque a sentença em um crescente list
Este loop aninhado está processando cerca de 50 sentenças es por segundo, o que é bom, mas ainda leva várias horas para processar todas as minhas frases.
Existe uma maneira de usar o
str. replace
(que acredito ser mais rápido), mas ainda exigindo que as substituições ocorram apenas em limites de palavras?Como alternativa, existe uma maneira de acelerar o método
re.sub
? Já melhorei a velocidade marginalmente pulandore.sub
se o tamanho da minha palavra for > do que o comprimento da minha frase, mas não é uma grande melhoria.
Estou usando o Python 3.5.2