Search code examples
pythonstdinraw-input

How to simply read in input from stdin delimited by space or spaces


Hello I'm a trying to learn python, In C++ to read in string from stdin I simply do

string str;
while (cin>>str)
    do_something(str)

but in python, I have to use

line = raw_input()

then

x = line.split()

then I have to loop through the list x to access each str to do_something(str)

this seems like a lot of code just to get each string delimited by space or spaces so my question is, is there a easier way?


Solution

  • Python doesn't special-case such a specific form of input for you, but it's trivial to make a little generator for it of course:

    def fromcin(prompt=None):
      while True:
        try: line = raw_input(prompt)
        except EOFError: break
        for w in line.split(): yield w
    

    and then, in your application code, you loop with a for statement (usually the best way to loop at application-code level):

    for w in fromcin():
      dosomething(w)