Estoy buscando combinar caracteres individuales que tengan un solo espacio entre ellos.
Por ejemplo:
a b c --> abc [all combined together]
ab c d ef --> ab cd ef [just combine the middle "c d"
foo bar --> foo bar [nothing between consecutive words]
Puedo capturar este término usando la expresión regular re.findall(r"(([A-z] ){2,})" object)
. Sin embargo, no estoy seguro de cómo configurar la pieza de reemplazo.
La única forma en que puedo pensar es en tres etapas:
- Busque el término con un
re.findall()
función. - Combina los términos capturados juntos.
- Luego hacer un reemplazo con un
re.sub()
.
Sin embargo, esto parece un poco desordenado, y como estoy usando más de 10 millones de registros, preferiría hacerlo como una sola declaración de expresiones regulares, si eso es posible.
Respuestas
5 para la respuesta № 1Busque dos palabras de una letra, la segunda como una anticipación para poder examinarla a continuación:
>>> re.sub(r"b(w) (?=wb)", r"1", "ab c d e and f")
"ab cde and f"
0 para la respuesta № 2
Creo que puedes probar con regex:
(?<=bw)s(?=wb)
y luego reponga los espacios coincidentes con nada.