Comparison problem
Tom Anderson
twic at urchin.earth.li
Sat Nov 26 15:32:22 EST 2005
Chris, as well as addressing what i think is causing your problem, i'm
going to point out some bits of your code that i think could be polished a
little. It's intended in a spirit of constructive criticism, so i hope you
don't mind!
On Sat, 26 Nov 2005, Chris wrote:
> if item[0:1]=="-":
item[0:1] seems a rather baroque way of writing item[0]! I'd actually
suggest writing this line like this:
if item.startswith("-:):
As i feel it's more readable.
> item=item[ :-7]
> item=item[1:]
You could just write:
item = item[1:7]
For those two lines.
> infile=open("inventory","r")
The "r" isn't necessary - reading is the default mode for files. You could
argue that this documents your intentions towards the file, i suppose, but
the traditional python idiom would leave it out.
> while infile:
> dummy=infile.readline()
The pythonic idiom for this is:
for dummy in infile:
Although i'd strongly suggest you change 'dummy' to a more descriptive
variable name; i use 'line' myself.
Now, this is also the line that i think is at the root of your trouble:
readline returns lines with the line-terminator ('\n' or whatever it is on
your system) still on them. That gets you into trouble later - see below.
When i'm iterating over lines in a file, the first thing i do with the
line is chomp off any trailing newline; the line after the for loop is
typically:
line = line.rstrip("\n")
> if dummy=='':break
You don't by any chance mean 'continue' here, do you?
> print item
> print ", "+dummy
> if (dummy == item): <This comparison isn't working>
This is where it all falls down - i suspect that what's happening here is
that dummy has a trailing newline, and item doesn't, so although they look
very similar, they're not the same string, so the comparison comes out
false. Try throwing in that rstrip at the head of the loop and see if it
fixes it.
HTH.
tom
--
Gotta treat 'em mean to make 'em scream.
More information about the Python-list
mailing list