/ / Combina caracteres individuales con espacios individuales entre ellos: python, regex

Combina caracteres individuales con espacios individuales entre ellos juntos: python, regex

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:

  1. Busque el término con un re.findall() función.
  2. Combina los términos capturados juntos.
  3. 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 № 1

Busque 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)

MANIFESTACIÓN

y luego reponga los espacios coincidentes con nada.