On 01/-10/-28163 02:59 PM, John Martinetti wrote:
Hello -
Welcome,
<snip>
# - create a record from all the fields
linedata = (vendornum, vendorname, ordernum, ordersuffix, orderdate,
buyer, partnum, qty, comment)
# - append the record to the list of records representing the CQ report
openPOs.append(linedata)
(snip)
The part I'm having a problem with is once I've detected that a record has a
blank buyerID field, I can't seem to figure out how to change it, in place.
I've tried finding the index of the openPOs using this:
openPOs.index(line)
and then trying to change the item like this:
openPOs[openPOs.index(line),5] = "NOBUYER"
but I'm getting a strange error: "TypeError: 'tuple' object does not
support item assignment"
You assign a tuple to linedata with the (vendornum, vendorname, ...)
syntax. Change those to square brackets and it'll be a list, which is
modifiable.
There are other ways to simplify your code, but the most relevant might
be to modify line[5] directly:
if line[5] == " " :
print "The field is blank!!!"
line[5] = "NOBUYER"
So first change it so that individual "line"s are lists instead of
tuples. Then change the list item directly, without resorting to
searching with index().
Another thing I note: You're counting on the file ending with a blank
line. If you're sure that'll always be the case, fine. But if you
really just want to read the whole file, replace the while True loop
with something like:
for record in txtreport:
and if you need to ignore blank lines, use
if record="" : continue
--
--
da...@ieee.org
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor