Python 如何简单地从由空格分隔的stdin读入输入

Python 如何简单地从由空格分隔的stdin读入输入,python,stdin,raw-input,Python,Stdin,Raw Input,你好,我是一个试图学习python的人, 在C++中,从STDIN中读取字符串,我只需做< /P> string str; while (cin>>str) do_something(str) 但是在python中,我必须使用 line = raw_input() 然后 然后我必须在列表x中循环访问每个str,以do\u something(str) 这似乎有很多代码只是为了让每个字符串由空格或空格分隔 所以我的问题是,有一种更简单的方法吗?< P> >实际上没有一种“更

你好,我是一个试图学习python的人, 在C++中,从STDIN中读取字符串,我只需做< /P>
string str;
while (cin>>str)
    do_something(str)
但是在python中,我必须使用

line = raw_input()
然后

然后我必须在列表x中循环访问每个str,以
do\u something(str)

这似乎有很多代码只是为了让每个字符串由空格或空格分隔 所以我的问题是,有一种更简单的方法吗?

< P> >实际上没有一种“更容易”的方法,因为Python没有内置的格式化的字符串函数,比如C++与<代码> IOStry 也就是说,您可以通过组合以下操作来缩短代码:

for str in raw_input().split():
   do_something(str)

Python并没有为您提供这种特殊形式的输入,但为其制作一个小型生成器当然很简单:

def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w
然后,在应用程序代码中,使用
for
语句循环(通常是在应用程序代码级别循环的最佳方式):


当标准输入完成时,您的代码将传播一个
EOFError
异常(您确实需要一个
try
/
异常来处理它,例如,请参阅我的答案)。直接在
raw_input()
的返回值上调用
split
,而不是将后者赋给中间变量,这确实是可行的,但我认为将它们分开会产生更可读的代码(因为您无论如何都应该为其编写一个生成器,节省一行代码并不是什么大问题)C++代码似乎含蓄,充满了隐含的假设。你真正的问题是什么?缺少解释,请在代码中添加一些单词。
map(do_something, line.split())
def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w
for w in fromcin():
  dosomething(w)