如何从用户那里获取多行输入

新手上路,请多包涵

我想编写一个程序来获取多行输入并逐行使用它。为什么在 Python 3 中没有像 raw_input 这样的函数?

input 不允许用户用换行符 ( Enter ) 分隔行。它只打印第一行。

它可以存储在变量中,甚至可以将其读取到列表中吗?

原文由 MaciejPL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 488
2 个回答

在 Python 3.x 中,Python 2.x 的 raw_input() 已被替换为 input() 函数。但是,在这两种情况下,您都不能输入多行字符串,为此,您需要逐行从用户那里获取输入,然后 .join() 他们使用 \n ,或者你可以还采用不同的行并使用 + 运算符将它们连接起来 \n

要从用户那里获取多行输入,您可以这样做:

 no_of_lines = 5
lines = ""
for i in xrange(no_of_lines):
    lines+=input()+"\n"

print(lines)

要么

lines = []
while True:
    line = input()
    if line:
        lines.append(line)
    else:
        break
text = '\n'.join(lines)

原文由 ZdaR 发布,翻译遵循 CC BY-SA 4.0 许可协议

raw_input 可以正确处理 EOF,所以我们可以编写一个循环,读取直到我们收到来自用户的 EOF (Ctrl-D):

蟒蛇3

 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)

蟒蛇2

 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)

原文由 xiaket 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题