raw_input如何处理ENTER或\ n

时间:2015-04-09 17:07:59

标签: python input

我有一长串的数字,我想通过raw_input输入到我的代码中。它包含通过SPACESENTER/RETURN间隔开的数字。该列表看起来像this。当我尝试使用函数raw_input,并复制粘贴长数字列表时,我的变量只保留第一行数字。到目前为止,这是我的代码:

def main(*arg):
    for i in arg:
        print arg

if __name__ == "__main__": main(raw_input("The large array of numbers"))

如何让我的代码继续阅读其余数字? 或者如果不可能,我可以让我的代码以任何方式确认输入吗?

P.S。虽然这是一个项目euler问题,但我不想要代码来回答项目的问题,或者建议硬编码数字。只是建议将数字输入我的代码。

2 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题,我认为这段代码应该有用(假设它在python 2.7中):

sentinel = '' # ends when this string is seen
rawinputtext = ''
for line in iter(raw_input, sentinel):
    rawinputtext += line + '\n' #or delete \n if you want it all in a single line
print rawinputtext

(代码取自:Raw input across multiple lines in Python

PS:甚至更好,你可以在一行中做同样的事情!

rawinputtext = '\n'.join(iter(raw_input, '') #replace '\n' for '' if you want the input in one single line

(代码取自:Input a multiline string in python

答案 1 :(得分:0)

我认为您实际需要的是直接从stdin通过sys.stdin阅读。但是你需要接受这样一个事实:应该有一种机制来停止接受来自stdin的任何数据,在这种情况下,通过传递EOF字符是可行的。通过组合键EOF

传递[CNTRL]+d个字符
>>> data=''.join(sys.stdin)
Hello
World
as
a
single stream
>>> print data
Hello
World
as
a
single stream