Skip to content

Instantly share code, notes, and snippets.

@juanalonso
Created October 30, 2022 08:34
Show Gist options
  • Save juanalonso/86377bce393752531f1acedc8fbad8d5 to your computer and use it in GitHub Desktop.
Save juanalonso/86377bce393752531f1acedc8fbad8d5 to your computer and use it in GitHub Desktop.
Divide un texto en maqueta y fragmentos, y luego lo recompone
import random
import re
random.seed()
original_text = '''
Gloria Fuertes nació en Madrid
a los dos días de edad,
pues fue muy laborioso el parto de mi madre
que si se descuida muere por vivirme.
A los tres años ya sabía leer
y a los seis ya sabía mis labores.
Yo era buena y delgada,
alta y algo enferma.
A los nueve años me pilló un carro
y a los catorce me pilló la guerra;
A los quince se murió mi madre, se fue cuando más falta me hacía.
'''
def extract_fragments_layout(text):
regex = r"[a-záéíóúüñ][a-záéíóúüñ ]+"
layout = re.sub(regex, '<f>', text, 0, re.MULTILINE | re.IGNORECASE)
matches = re.finditer(regex, text, re.MULTILINE | re.IGNORECASE)
fragments=[]
for _, match in enumerate(matches):
fragments.append(match.group())
return fragments, layout
def restore_text(fragments, layout):
matches = re.finditer(pattern='<f>', string=layout)
pos = []
for m in matches:
pos.insert(0, (m.start(), m.end()))
assert len(pos) == len(fragments)
for (start, end) in pos:
layout = layout[:start] + fragments.pop() + layout[end:]
return layout
# Separa el texto en "fragmentos" y "maqueta"
fragments, layout = extract_fragments_layout(original_text)
print(fragments)
print(layout)
# Desordena los fragmentos
random.shuffle(fragments)
# Recompone el texto a partir de la maqueta y los fragmentos desordenados
restored_text = restore_text(fragments, layout)
print(restored_text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment