Tengo un código que le pide al usuario que dé líneas con diferentes cantidades de palabras, la siguiente línea siempre se da en otra fila. Quiero dividir el texto dado en la longitud ingresada por el usuario en diferentes filas.

En este momento tengo un código que divide las líneas a la longitud deseada por el usuario, pero como cuenta el espacio ("") como una "palabra", algunas líneas comienzan con espacio. ¿Cómo evito que eso suceda?

def chunkstring(string, length):
    return (string[0+i:length+i] for i in range(0, len(string), length))

def main():

    print("Enter text rows. Quit by entering an empty row.")
    msg = read_message()
    lines = (i.strip() for i in msg.splitlines())
    get_line = int(input("Enter the number of characters per line: "))
    for line in lines:
        for chunk in chunkstring(line, get_line):
            print(chunk)
``
0
Boberto 16 feb. 2020 a las 22:31

2 respuestas

La mejor respuesta

Puede usar la tira de Python para eliminar los espacios restantes, consulte este artículo o este otro

Así que solo imprime chunk.strip()

Espero que ayude.

0
Gamopo 16 feb. 2020 a las 19:35

La mejor opción es usar expresiones regulares . Además, no necesita hacer un splitlines antes de:

import re

print("Enter text rows. Quit by entering an empty row.")
msg = read_message()
width = int(input("Enter the number of characters per line: "))

pat = re.compile(f" *.{{1,{width}}}")

chunks = pat.findall(msg)
for chunk in chunks:
    print(chunk)
0
ChemaCortes 16 feb. 2020 a las 20:41