views:

5377

answers:

4

In C++, I could do:

for(int i = 0; i < str.length(); ++i)
    std::cout << str[i] << std::endl;

How do I iterate over a string in Python?

+25  A: 

even easier:

for c in "test":
    print c

:-)

Johannes Weiß
AFter a while of python-ing, I'm really hating C++ (I'm stuck with it for a current university course!)
hasen j
Smart-and-to-the-point answer. :)
zgoda
+26  A: 

As Johannes pointed out,

for c in "string":
    #do something with c

You can iterate pretty much anything in python using the for loop construct,

for example, open("file.txt") returns a file object (and opens the file), iterating over it iterates over lines in that file

for line in open(filename):
    # do something with line

If that seems like magic, well it kinda is, but the idea behind it is really simple.

There's a simple iterator protocol that can be applied to any kind of object to make the for loop work on it.

Simply implement an iterator that defines a next() method, and implement an __iter__ method on a class to make it iterable. (the __iter__ of course, should return an iterator object, that is, an object that defines next())

See official documentation

hasen j
+1  A: 

Strings are just "sequences" in python and, as such, can be iterated in loops, as Johannes pointed out.

happy_emi
+3  A: 

Just to make a more comprehensive answer, the C way of iterating over a string can apply in Python, if you really wanna force a square peg into a round hole.

i = 0
while i < len(str):
    print str[i]
    i += 1

But then again, why do that when strings are inherently iterable?

for i in str:
    print i
Andrew Szeto