64

I am writing a simple Python for loop to prnt the current character in a string. However, I could not get the index of the character. Here is what I have, does anyone know a good way to get the current index of the character in the loop?

 loopme = 'THIS IS A VERY LONG STRING WITH MANY MANY WORDS!'

 for w  in loopme:
    print "CURRENT WORD IS " + w + " AT CHARACTER " 
1
  • 1
    Aside from the numbering issue, are you sure this is what you want? w is the current character, not word. Commented Mar 28, 2013 at 14:46

2 Answers 2

113

Use the enumerate() function to generate the index along with the elements of the sequence you are looping over:

for index, w in enumerate(loopme):
    print "CURRENT WORD IS", w, "AT CHARACTER", index 
Sign up to request clarification or add additional context in comments.

5 Comments

so with the enumerate() function, you need to define two variables? one for the index and one for the characters?
@user1817081: You don't have to; you are now looping over something that yields two-value tuples. Using tuple unpacking just makes it easier to 'receive' them.
@user1817081: You can also do for elem in enumerate(loopme), then use elem[[0] for the index value and elem[1] for the character, but that is just more cumbersome.
Gotcha, so enumerate() is creating a map of the string. I am guessing this will also apply to a List?
@user1817081: enumerate() can be used on any sequence. It doesn't create a map, it simply keeps a counter. Every time the for construct asks for the next element, it in turn asks the wrapped sequence for the next item, then returns the value of the counter together with that next value from the wrapped sequence, then increments the internal counter.
5

Do you want to iterate over characters or words?

For words, you'll have to split the words first, such as

for index, word in enumerate(loopme.split(" ")):
    print "CURRENT WORD IS", word, "AT INDEX", index

This prints the index of the word.

For the absolute character position you'd need something like

chars = 0
for index, word in enumerate(loopme.split(" ")):
    print "CURRENT WORD IS", word, "AT INDEX", index, "AND AT CHARACTER", chars
    chars += len(word) + 1

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.