Je souhaite créer un programme Python prenant plusieurs lignes d’entrée utilisateur. Par exemple:
This is a multilined input.
It has multiple sentences.
Each sentence is on a newline.
Comment puis-je prendre plusieurs lignes d'entrées brutes?
sentinel = '' # ends when this string is seen
for line in iter(raw_input, sentinel):
pass # do things here
Pour que chaque ligne soit une chaîne, vous pouvez faire:
'\n'.join(iter(raw_input, sentinel))
Python 3:
'\n'.join(iter(input, sentinel))
Continuez à lire les lignes jusqu'à ce que l'utilisateur entre une ligne vide (ou remplacez stopword
par autre chose)
text = ""
stopword = ""
while True:
line = raw_input()
if line.strip() == stopword:
break
text += "%s\n" % line
print text
Sinon, vous pouvez essayer sys.stdin.read()
import sys
s = sys.stdin.read()
print(s)
Essaye ça
import sys
lines = sys.stdin.read().splitlines()
print(lines)
CONTRIBUTION:
1
2
3
4
SORTIE: ['1', '2', '3', '4']
En étendant simplement cette réponse https://stackoverflow.com/a/11664652/4476612 Au lieu d'un mot d'arrêt, vous pouvez simplement vérifier si une ligne est présente ou non.
content = []
while True:
line = raw_input()
if line:
content.append(line)
else:
break
vous obtiendrez les lignes dans une liste, puis vous joindrez à\n pour obtenir votre format.
print '\n'.join(content)
sys.stdin.read () peut être utilisé pour prendre une entrée multiligne de l'utilisateur Par exemple
>>> 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
* J'ai moi-même longtemps lutté avec cette question, parce que je voulais trouver un moyen de lire plusieurs lignes d'entrée utilisateur sans que l'utilisateur doive y mettre fin avec Control D (ou un mot final) . J'ai trouvé un moyen dans Python3, en utilisant le module pyperclip (que vous devrez installer en utilisant pip install) Voici un exemple prenant une liste d'adresses IP *
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
Pour moi, cela fait exactement ce que je cherchais; prenez plusieurs lignes, faites les actions nécessaires (ici une simple impression), puis coupez la boucle lorsque la dernière ligne a été gérée. J'espère que cela pourra vous aider également.