Python 如何从用户获取多行输入

Python 如何从用户获取多行输入,python,input,multiline,Python,Input,Multiline,我想写一个程序,获得多行输入并逐行处理。为什么Python3中没有像raw\u input这样的函数 input不允许用户放置以换行符分隔的行(回车),它只打印回第一行 它可以存储在变量中,甚至可以读取到列表中吗?在Python3.x中,Python2.x的raw\u input()已被input()函数替换。但是,在这两种情况下,您都不能输入多行字符串,为此,您需要逐行从用户处获取输入,然后使用\n连接()它们,或者您也可以使用+运算符连接不同的行,并用\n分隔 要从用户处获得多行输入,您可以

我想写一个程序,获得多行输入并逐行处理。为什么Python3中没有像
raw\u input
这样的函数

input
不允许用户放置以换行符分隔的行(回车),它只打印回第一行


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

在Python3.x中,Python2.x的
raw\u input()
已被
input()
函数替换。但是,在这两种情况下,您都不能输入多行字符串,为此,您需要逐行从用户处获取输入,然后使用
\n
连接()它们,或者您也可以使用
+
运算符连接不同的行,并用
\n
分隔

要从用户处获得多行输入,您可以执行以下操作:

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

print(lines)


在Python3.x中,Python2.x的
raw\u input()
已被
input()
函数替换。但是,在这两种情况下,您都不能输入多行字符串,为此,您需要逐行从用户处获取输入,然后使用
\n
连接()它们,或者您也可以使用
+
运算符连接不同的行,并用
\n
分隔

要从用户处获得多行输入,您可以执行以下操作:

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

print(lines)

使用
input()
内置函数从用户处获取输入行

你可以阅读

您可以使用以下代码一次获取多行(以空行结束):

使用
input()
内置函数从用户处获取输入行

你可以阅读

您可以使用以下代码一次获取多行(以空行结束):

输入(提示)
基本等同于

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)来发出结束信号。最后一个将在读取五行后返回,无论是从文件还是从终端/键盘。

输入(提示)
基本等同于

def input(prompt):
    print(prompt, end='', file=sys.stderr)
    return sys.stdin.readline()
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
如果愿意,您可以直接从
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)来发出结束信号。最后一个将在从文件或终端/键盘读取五行后返回。

raw\u input
可以正确处理EOF,因此我们可以编写循环,读取直到收到用户的EOF(Ctrl-D):

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
Python 3 Python 2
raw_input
可以正确处理EOF,因此我们可以编写一个循环,读取直到收到用户的EOF(Ctrl-D):

Python 3 Python 2

因为Python3.x中有
input()
用于从用户获取输入。但是它不允许放置多行显示您是否使用
raw\u input获得“多行输入”
?为什么不一次获取一行,循环直到用户输入一个空行?但我想一次输入所有行这并不能回答我的第一个问题,只能部分回答第二个问题。因为Python3.x中有
input()
,用于从用户处获取输入。但是如果您获得“多行输入”,它不允许放置多行显示使用
原始输入
?为什么不一次输入一行,循环直到用户输入一个空行?但我想一次输入所有行,这并没有回答我的第一个问题,只回答了第二个问题的一部分。好的,这很清楚。因此,没有选项粘贴几行用换行符分隔的文本并存储它们。把它写进一个文件,文本文件怎么样?是的,实际上在Python中,你可以通过使用
“multi-line-string”
@ZdaR
“multi-line-string”
来拥有一个多行字符串。好的,这很清楚。因此,没有选项粘贴几行用换行符分隔的文本并存储它们。将其写入一个文件,文本文件怎么样?是的,实际上在Python中,您可以通过使用
“multi-line-string”“”
@ZdaR
“multi-line-string”“”
获得一个多行字符串。欢迎使用SO:)最好在您发布的代码中添加一个解释作为答案,因此,它将帮助访问者理解为什么这是一个好答案。欢迎使用so:)最好在您发布的代码中添加一个解释作为答案,这样它将帮助访问者理解为什么这是一个好答案。好答案。要回答OP关于Python3的问题,请将
raw_input(“”
替换为
input()
,并将
print
语句更改为使用括号。当用户在行中写入一些内容,但不是按enter键换行时,他们按ctrl-d键触发EOR时会发生什么?根据我的测试,它会导致
contents
中的最后一个元素的最后一个字符被修剪。我假设您使用了双Ctrl-D(这不是我们在这里讨论的实际情况),因为单个Ctrl-D不能在非空行中触发EOFError。在PyDev中,按Ctrl-D结束输入无法正常工作。回答得好。要回答OP关于Python3的问题,请将
raw_input(“”
替换为
input()
,并将
print
语句更改为使用括号。当用户在行中写入一些内容,但不是按enter键换行时,他们按ctrl-d键触发EOR时会发生什么?根据我的测试,它会导致
contents
中的最后一个元素的最后一个字符被修剪。我认为您使用了双Ctrl-D(这不是我们在这里讨论的实际情况),因为单个Ctrl-D不能在非空行中触发EOFError。在PyDev中,按Ctrl-D结束输入无法正常工作。
[line.splitlines()用于sys.stdin中的行]