Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #49395 > unrolled thread
| Started by | Titiksha Joshi <joshi.titiksha90@gmail.com> |
|---|---|
| First post | 2013-06-28 18:20 -0700 |
| Last post | 2013-07-01 12:30 +0000 |
| Articles | 9 — 8 participants |
Back to article view | Back to comp.lang.python
indexerror: list index out of range?? Titiksha Joshi <joshi.titiksha90@gmail.com> - 2013-06-28 18:20 -0700
Re: indexerror: list index out of range?? Chris Angelico <rosuav@gmail.com> - 2013-06-29 11:53 +1000
Re: indexerror: list index out of range?? Dave Angel <davea@davea.name> - 2013-06-28 21:58 -0400
Re: indexerror: list index out of range?? Titiksha <joshi.titiksha90@gmail.com> - 2013-06-28 20:35 -0700
Re: indexerror: list index out of range?? Dave Angel <davea@davea.name> - 2013-06-29 09:44 -0400
Re: indexerror: list index out of range?? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-06-29 15:30 +0100
Re: indexerror: list index out of range?? Joshua Landau <joshua.landau.ws@gmail.com> - 2013-06-29 16:52 +0100
Re: indexerror: list index out of range?? Robert Kern <robert.kern@gmail.com> - 2013-07-01 09:45 +0100
Re: indexerror: list index out of range?? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-07-01 12:30 +0000
| From | Titiksha Joshi <joshi.titiksha90@gmail.com> |
|---|---|
| Date | 2013-06-28 18:20 -0700 |
| Subject | indexerror: list index out of range?? |
| Message-ID | <8b12635e-c3e9-49b2-b3fa-792559088821@googlegroups.com> |
Hi,
I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
m=['631138', '601034', '2834', '2908', '64808']
i=0
while i<len(m):
print(i)
my_file = open("ALL_BUSES_FINAL.csv", "r+")
for line in my_file:
if m[i] in line:
print (line)
a.append(line)
i+=1
print(a)
my_file.close()
The output is as follows:
0
LAKEFLD 3227,631138
['LAKEFLD 3227,631138\n']
1
NOBLES 3013,601034
['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n']
2
GR_ISLD I,2834
['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n']
FTTHOMP 928,2908
['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n']
VICTRYH 15,64808
['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n', 'VICTRYH 15,64808\n']
Traceback (most recent call last):
File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
if m[i] in line:
IndexError: list index out of range
>>>
I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
Thanks in advance.
[toc] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-06-29 11:53 +1000 |
| Message-ID | <mailman.3976.1372470834.3114.python-list@python.org> |
| In reply to | #49395 |
On Sat, Jun 29, 2013 at 11:20 AM, Titiksha Joshi
<joshi.titiksha90@gmail.com> wrote:
> Hi,
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
> m=['631138', '601034', '2834', '2908', '64808']
>
> i=0
> while i<len(m):
> print(i)
> my_file = open("ALL_BUSES_FINAL.csv", "r+")
> for line in my_file:
> if m[i] in line:
> print (line)
> a.append(line)
> i+=1
> print(a)
> my_file.close()
What this does is open the file once for every string in 'm', and read
through it. But you increment i for every line in the file, that's why
you're having problems.
I think you probably want to open the file once and iterate over it,
but you'll need to figure out what you're trying to do before you can
figure out how to do it in Python :)
Also, be up-front about homework assignments. Honesty won't hurt you
(since we can all tell anyway), and it means we know you're trying to
learn, not to cheat. And yes, there are a discouraging number of
people who do try to cheat, so setting yourself apart from them is
well worth it. :)
Chris Angelico
[toc] | [prev] | [next] | [standalone]
| From | Dave Angel <davea@davea.name> |
|---|---|
| Date | 2013-06-28 21:58 -0400 |
| Message-ID | <mailman.3977.1372471106.3114.python-list@python.org> |
| In reply to | #49395 |
On 06/28/2013 09:20 PM, Titiksha Joshi wrote:
> Hi,
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
> m=['631138', '601034', '2834', '2908', '64808']
>
It's not hard to see what's wrong in the following excerpt, but it is
hard to guess what you really wanted.
Did you want to find all lines which match any of the strings in m? Or
are you just satisfied to match each of the strings in m against *some*
line of the file? Or is it something else entirely?
You have a nested loop here (for loop inside a while loop), and you're
confusing the limit values for the outer one.
> i=0
> while i<len(m):
> print(i)
> my_file = open("ALL_BUSES_FINAL.csv", "r+")
> for line in my_file:
> if m[i] in line:
> print (line)
> a.append(line)
> i+=1
You increment i here, but do not check if it's reached the end of the m.
So eventually it does, and crashes.
> print(a)
> my_file.close()
>
>
> The output is as follows:
> 0
> LAKEFLD 3227,631138
>
> ['LAKEFLD 3227,631138\n']
>
> 1
> NOBLES 3013,601034
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n']
>
> 2
> GR_ISLD I,2834
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n']
>
> FTTHOMP 928,2908
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n']
>
> VICTRYH 15,64808
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n', 'VICTRYH 15,64808\n']
> Traceback (most recent call last):
> File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
> if m[i] in line:
> IndexError: list index out of range
>>>>
>
> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
> Thanks in advance.
>
Another big problem will arise as soon as you have a string in m which
is a strict substring of a value in the line. You'll get false matches.
So presumably you really want to use csv logic, and have explicit
fields that you're searching for, rather than using 'in' operator. And
at that point, maybe you just want to check field #2 of each line.
--
DaveA
[toc] | [prev] | [next] | [standalone]
| From | Titiksha <joshi.titiksha90@gmail.com> |
|---|---|
| Date | 2013-06-28 20:35 -0700 |
| Message-ID | <c6642bec-58b1-4db2-bad9-6f85cb3cf5c6@googlegroups.com> |
| In reply to | #49395 |
On Friday, June 28, 2013 8:20:28 PM UTC-5, Titiksha wrote:
> Hi,
>
> I am working on the following code but am getting the error: list index out of range. I surfed through the group but somehow I am not able to fix my error.Please guide.Structure is given below:
>
> m is a list of 5 elements. I have to match elements of m from fields in file ALL_BUSES_FINAL.cvs.
>
> m=['631138', '601034', '2834', '2908', '64808']
>
>
>
> i=0
>
> while i<len(m):
>
> print(i)
>
> my_file = open("ALL_BUSES_FINAL.csv", "r+")
>
> for line in my_file:
>
> if m[i] in line:
>
> print (line)
>
> a.append(line)
>
> i+=1
>
> print(a)
>
> my_file.close()
>
>
>
>
>
> The output is as follows:
>
> 0
>
> LAKEFLD 3227,631138
>
>
>
> ['LAKEFLD 3227,631138\n']
>
>
>
> 1
>
> NOBLES 3013,601034
>
>
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n']
>
>
>
> 2
>
> GR_ISLD I,2834
>
>
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n']
>
>
>
> FTTHOMP 928,2908
>
>
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n']
>
>
>
> VICTRYH 15,64808
>
>
>
> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n', 'GR_ISLD I,2834\n', 'FTTHOMP 928,2908\n', 'VICTRYH 15,64808\n']
>
> Traceback (most recent call last):
>
> File "C:\Users\TJ\dist_tracking.py", line 40, in <module>
>
> if m[i] in line:
>
> IndexError: list index out of range
>
> >>>
>
>
>
> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
>
> Thanks in advance.
Thanks for helping out!
Dave you mentioned about false matches in case of string in m is substring of line. How do I manage that issue? Is there any other method I should look into?
What I am looking to do is..I have a list of m which I need to map in the same sequence to the ALL_BUSES_FINAL file and get the entire line which has the string in m.I want to iterate through all the lines in ALL_BUSES_FINAL to match the all strings in m.
[toc] | [prev] | [next] | [standalone]
| From | Dave Angel <davea@davea.name> |
|---|---|
| Date | 2013-06-29 09:44 -0400 |
| Message-ID | <mailman.3987.1372513508.3114.python-list@python.org> |
| In reply to | #49401 |
On 06/28/2013 11:35 PM, Titiksha wrote:
> On Friday, June 28, 2013 8:20:28 PM UTC-5, Titiksha wrote:
>>
<SNIP double-spaced nonsense>
>>
>> m=['631138', '601034', '2834', '2908', '64808']
>>
<SNIP more double-spaced nonsense>
>>
>>
>>
>> ['LAKEFLD 3227,631138\n', 'NOBLES 3013,601034\n']
>>
>>
Since you're using the arrogant and buggy GoogleGroups, this
http://wiki.python.org/moin/GoogleGroupsPython.
>>
>>
>> I see the line,a being correct but print (i) does not show up after 2. and index error comes up. I am too confused now. Please guide.
>>
>> Thanks in advance.
>
> Thanks for helping out!
> Dave you mentioned about false matches in case of string in m is substring of line. How do I manage that issue? Is there any other method I should look into?
Suppose one of the items in m were '1234', and suppose one of the lines
in the file be
'HARMONY 12,441234913'
Your current logic would consider it a match, and I'm assuming that
would be a false match.
To fix that, you need to parse the line from the file, and separate it
into fields, one of which needs to exactly match 1234.
You call it a csv file, and if it were, you could just use the csv
module. But there's no comma between LAKEFLD and 3227, so the line
would be considered to have two fields. If that's correct, then you're
golden. Just use csv to get the fields, and compare m[i] == field[1]
rather than m[i] in line.
>
> What I am looking to do is..I have a list of m which I need to map in the same sequence to the ALL_BUSES_FINAL file and get the entire line which has the string in m.I want to iterate through all the lines in ALL_BUSES_FINAL to match the all strings in m.
>
Any way I can interpret those sentences, it contradicts itself. Could
you just post the complete assignment, without paraphrasing?
Taking an individual phrase of what you said: "same sequence" implies
you do NOT want to re-open the file multiple times. So move the open
outside of the while loop. Add a test and a break after incrementing i,
since you'll quit looking once you have a match for all the items, and
you'll know that when i reaches the len of m.
Hopefully you'll know how to get the single line out of a when you're
done, maybe by concatenating field[0] of each line.
--
DaveA
[toc] | [prev] | [next] | [standalone]
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Date | 2013-06-29 15:30 +0100 |
| Message-ID | <mailman.3992.1372516245.3114.python-list@python.org> |
| In reply to | #49401 |
On 29/06/2013 14:44, Dave Angel wrote: > On 06/28/2013 11:35 PM, Titiksha wrote: > > Since you're using the arrogant and buggy GoogleGroups, this > http://wiki.python.org/moin/GoogleGroupsPython. > Please don't make comments like this, you'll upset the Python Mailing List Police. -- "Steve is going for the pink ball - and for those of you who are watching in black and white, the pink is next to the green." Snooker commentator 'Whispering' Ted Lowe. Mark Lawrence
[toc] | [prev] | [next] | [standalone]
| From | Joshua Landau <joshua.landau.ws@gmail.com> |
|---|---|
| Date | 2013-06-29 16:52 +0100 |
| Message-ID | <mailman.4051.1372664301.3114.python-list@python.org> |
| In reply to | #49401 |
On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote: > > On 29/06/2013 14:44, Dave Angel wrote: >> >> Since you're using the arrogant and buggy GoogleGroups, this >> http://wiki.python.org/moin/GoogleGroupsPython. >> > Please don't make comments like this, you'll upset the Python Mailing List > Police. *doesn't understand*
[toc] | [prev] | [next] | [standalone]
| From | Robert Kern <robert.kern@gmail.com> |
|---|---|
| Date | 2013-07-01 09:45 +0100 |
| Message-ID | <mailman.4054.1372668359.3114.python-list@python.org> |
| In reply to | #49401 |
On 2013-06-29 16:52, Joshua Landau wrote: > On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote: >> >> On 29/06/2013 14:44, Dave Angel wrote: >>> >>> Since you're using the arrogant and buggy GoogleGroups, this >>> http://wiki.python.org/moin/GoogleGroupsPython. >>> >> Please don't make comments like this, you'll upset the Python Mailing List >> Police. > > *doesn't understand* Mark frequently makes similar comments (in content and tone) to people who come here using Google Groups. Presumably, he has received criticism for this (mostly on tone grounds, I imagine), either on or off list. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
[toc] | [prev] | [next] | [standalone]
| From | Steven D'Aprano <steve+comp.lang.python@pearwood.info> |
|---|---|
| Date | 2013-07-01 12:30 +0000 |
| Message-ID | <51d1767a$0$29999$c3e8da3$5496439d@news.astraweb.com> |
| In reply to | #49531 |
On Mon, 01 Jul 2013 09:45:52 +0100, Robert Kern wrote: > On 2013-06-29 16:52, Joshua Landau wrote: >> On 29 June 2013 15:30, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote: >>> >>> On 29/06/2013 14:44, Dave Angel wrote: >>>> >>>> Since you're using the arrogant and buggy GoogleGroups, this >>>> http://wiki.python.org/moin/GoogleGroupsPython. >>>> >>> Please don't make comments like this, you'll upset the Python Mailing >>> List Police. >> >> *doesn't understand* > > Mark frequently makes similar comments (in content and tone) to people > who come here using Google Groups. Presumably, he has received criticism > for this (mostly on tone grounds, I imagine), either on or off list. That would be me, and it wasn't about Google Groups. After Mark was repeatedly abusive towards somebody, including telling this person to kill themselves, and after he chose to ignore both polite requests to cease flaming, and a fair warning that he would be kill-filed if he persisted, he persisted and so I kill-filed him. Which is a pity, because Mark does know Python well and he can be very helpful (although sometimes abrasive). I think on balance, when he's not flaming, he makes a positive contribution to this community. The kill-filing is only temporary, and I look forward to seeing his posts again soon. Hopefully by that time, he'll stop feeling put-out and hurt that I've chosen to not read his flames, and cease misrepresenting my actions. -- Steven
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.python
csiph-web