web-dev-qa-db-fra.com

Comment lire plusieurs lignes de raw_input en Python?

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?

49
felix001
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))
66
jamylak

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
6
Junuxx

Sinon, vous pouvez essayer sys.stdin.read()

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

Essaye ça

import sys

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

print(lines)

CONTRIBUTION:

1

2

3

4

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

1
Arpitt Desai

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)
1
Rushikesh Gaidhani

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
0
vishnu vardhan

* 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.

0
Jon