Я хочу создать программу Python, которая принимает несколько строк ввода пользователя. Например:
This is a multilined input.
It has multiple sentences.
Each sentence is on a newline.
Как я могу взять несколько строк исходного ввода?
Я хочу создать программу Python, которая принимает несколько строк ввода пользователя. Например:
This is a multilined input.
It has multiple sentences.
Each sentence is on a newline.
Как я могу взять несколько строк исходного ввода?
sentinel = '' # ends when this string is seen
for line in iter(raw_input, sentinel):
pass # do things here
Чтобы получить каждую строку в виде строки, которую вы можете сделать:
'\n'.join(iter(raw_input, sentinel))
Python 3:
'\n'.join(iter(input, sentinel))
Продолжайте читать строки, пока пользователь не войдет в пустую строку (или измените stopword
на что-то еще)
text = ""
stopword = ""
while True:
line = raw_input()
if line.strip() == stopword:
break
text += "%s\n" % line
print text
Кроме того, вы можете попробовать sys.stdin.read()
import sys
s = sys.stdin.read()
print(s)
Просто расширив этот ответ fooobar.com/questions/136209/... вместо любого стоп-слова, вы можете просто проверить, есть ли строка или нет
content = []
while True:
line = raw_input()
if line:
content.append(line)
else:
break
Вы получите строки в списке, а затем присоединитесь к \n, чтобы перейти в ваш формат.
print '\n'.join(content)
Попробуй это
import sys
lines = sys.stdin.read().splitlines()
print(lines)
ВХОД:
1
2
3
4
ВЫХОД: ['1', '2', '3', '4']
sys.stdin.read() может использоваться для получения многострочного ввода от пользователя. Например
>>> 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
* Я долго боролся с этим вопросом, потому что хотел найти способ прочитать несколько строк пользовательского ввода без необходимости прерывать его с помощью Control D (или стоп-слова). В конце концов я нашел способ в Python3, используя модуль pyperclip (который вы должны будете установить с помощью установки pip). Ниже приведен пример, который принимает список 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
Для меня это именно то, что я искал; взять несколько строк ввода, выполнить необходимые действия (здесь простая печать), а затем разорвать цикл, когда была обработана последняя строка. Надеюсь, это может быть одинаково полезно и для вас.