Reputation: 2789
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?
Upvotes: 2
Views: 9463
Reputation: 881635
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)
Upvotes: 6
Reputation: 3446
There isn't really an "easier" way, since Python doesn't have built-in formatted string functions like C++ does with iostream
.
That said, you could shorten your code by combining the operations:
for str in raw_input().split():
do_something(str)
Upvotes: 0