Cómo obtener entradas multilínea del usuario [duplicado]

Resuelto MaciejPL asked hace 9 años • 5 respuestas

Quiero escribir un programa que obtenga entradas de varias líneas y trabajar con él línea por línea. ¿ Por qué no hay ninguna función como raw_inputen Python 3?

inputno permite al usuario poner líneas separadas por nueva línea ( Enter). Imprime solo la primera línea.

¿Se puede almacenar en una variable o incluso leerlo en una lista?

MaciejPL avatar May 14 '15 20:05 MaciejPL
Aceptado

raw_inputpuede manejar correctamente el EOF, por lo que podemos escribir un bucle, leer hasta que hayamos recibido un EOF (Ctrl-D) del usuario:

Pitón 3

print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
    try:
        line = input()
    except EOFError:
        break
    contents.append(line)

Pitón 2

print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
    try:
        line = raw_input("")
    except EOFError:
        break
    contents.append(line)
xiaket avatar Jul 06 '2016 11:07 xiaket

En Python 3.x, el raw_input()de Python 2.x ha sido reemplazado por input()función. Sin embargo, en ambos casos no puede ingresar cadenas de varias líneas, para ello necesitaría obtener la entrada del usuario línea por línea y luego .join()usarla \n, o también puede tomar varias líneas y concatenarlas usando +el operador separado por\n

Para obtener entradas de varias líneas del usuario, puede hacer lo siguiente:

no_of_lines = 5
lines = ""
for i in xrange(no_of_lines):
    lines+=input()+"\n"

print(lines)

O

lines = []
while True:
    line = input()
    if line:
        lines.append(line)
    else:
        break
text = '\n'.join(lines)
ZdaR avatar May 14 '2015 13:05 ZdaR