我想编写一个程序来获取多行输入并逐行处理它。为什么在Python 3中没有像Salefrm_subform
这样的函数?
raw_input
不允许用户将换行符分隔换行( Enter ),它只打印第一行。
可以存储在变量中,甚至可以将其读取到列表中吗?
答案 0 :(得分:29)
raw_input
可以正确处理EOF,所以我们可以写一个循环,直到我们收到用户的EOF(Ctrl-D):
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)
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)
答案 1 :(得分:23)
在Python 3.x中,Python 2.x的raw_input()
已被input()
函数取代。但是,在这两种情况下,您都无法输入多行字符串,为此您需要逐行从用户处获取输入,然后使用.join()
\n
输入,或者您也可以使用各种行并使用+
\n
运算符将它们连接起来
要从用户那里获得多行输入,您可以这样:
no_of_lines = 5
lines = ""
for i in xrange(5):
lines+=input()+"\n"
print lines
或者
lines = []
while True:
line = input()
if line:
lines.append(line)
else:
break
text = '\n'.join(lines)
答案 2 :(得分:3)
input(prompt)
基本上等同于
def input(prompt):
print(prompt, end='', file=sys.stderr)
return sys.stdin.readline()
如果您愿意,可以直接从sys.stdin
阅读。
lines = sys.stdin.readlines()
lines = [line for line in sys.stdin]
five_lines = list(itertools.islice(sys.stdin, 5))
前两个要求输入端以某种方式,通过到达文件的末尾或用户键入Control-D(或Windows中的Control-Z)来表示结束。无论是从文件还是从终端/键盘读取了五行,最后一行将返回。
答案 3 :(得分:1)
答案 4 :(得分:0)
no_of_lines = 5
lines = ""
for i in xrange(5):
lines+=input()+"\n"
a=raw_input("if u want to continue (Y/n)")
""
if(a=='y'):
continue
else:
break
print lines