wake-up-neo.com

Wie lese ich mehrere Zeilen von raw_input in Python?

Ich möchte ein Python-Programm erstellen, das mehrere Zeilen Benutzereingaben enthält. Zum Beispiel:

This is a multilined input.
It has multiple sentences.
Each sentence is on a newline.

Wie kann ich mehrere Zeilen Rohdaten eingeben?

49
felix001
sentinel = '' # ends when this string is seen
for line in iter(raw_input, sentinel):
    pass # do things here

Um jede Zeile als Zeichenfolge zu erhalten, können Sie Folgendes tun:

'\n'.join(iter(raw_input, sentinel))

Python 3:

'\n'.join(iter(input, sentinel))
66
jamylak

Lesen Sie weiterhin Zeilen, bis der Benutzer eine leere Zeile eingibt (oder ändern Sie stopword in etwas anderes)

text = ""
stopword = ""
while True:
    line = raw_input()
    if line.strip() == stopword:
        break
    text += "%s\n" % line
print text
6
Junuxx

Alternativ können Sie sys.stdin.read() versuchen.

import sys
s = sys.stdin.read()
print(s)
4
Venkat

Versuche dies

import sys

lines = sys.stdin.read().splitlines()

print(lines)

INPUT:

1

2

3

4

AUSGABE: ['1', '2', '3', '4']

1
Arpitt Desai

Erweitern Sie einfach diese Antwort https://stackoverflow.com/a/11664652/4476612 Statt eines Stoppworts können Sie einfach prüfen, ob eine Zeile vorhanden ist oder nicht

content = []
while True:
    line = raw_input()
    if line:
        content.append(line)
    else:
        break

sie erhalten die Zeilen in einer Liste und verbinden sich dann mit\n, um Ihr Format zu erhalten.

print '\n'.join(content)
1

sys.stdin.read () kann verwendet werden, um mehrzeilige Eingaben vom Benutzer zu erhalten. Zum Beispiel

>>> import sys
>>> data = sys.stdin.read()
  line one
  line two
  line three
  <<Ctrl+d>>
>>> for line in data.split(sep='\n'):
  print(line)

o/p:line one
    line two
    line three
0
vishnu vardhan

* Ich hatte lange Zeit mit dieser Frage zu kämpfen, weil ich einen Weg finden wollte, mehrere Zeilen der Benutzereingaben zu lesen, ohne dass der Benutzer sie mit Control D (oder einem Stopp-Word) beenden musste Ich habe in Python3 einen Weg gefunden, mit dem pyperclip-Modul (das Sie mit pip install installieren müssen) Das folgende Beispiel zeigt eine Liste von IPs *

import pyperclip

lines = 0

while True:
    lines = lines + 1 #counts iterations of the while loop.

    text = pyperclip.paste()
    linecount = text.count('\n')+1 #counts lines in clipboard content.

    if lines <= linecount: # aslong as the while loop hasn't iterated as many times as there are lines in the clipboard.
        ipaddress = input()
        print(ipaddress)

    else:
        break

Für mich macht das genau das, wonach ich gesucht habe; Nehmen Sie mehrere Eingabezeilen vor, führen Sie die erforderlichen Aktionen aus (hier ein einfacher Ausdruck), und brechen Sie die Schleife ab, wenn die letzte Zeile bearbeitet wurde. Ich hoffe, es kann auch für Sie hilfreich sein.

0
Jon