"John Martinetti" <s...@missinglynx.net> wrote in message
news:AANLkTi=8kvksqzpujsqwffj8yarjcwhuhawtzkzfv...@mail.gmail.com...
Hello -
I'm a novice programmer, not even amateur level and I need some help with
developing an algorithm to process a list of strings.
I hope this list is tolerant of n00bs, if not, please let me know and I'll
take this elsewhere.
Some background.
I cut up a text based report from a reporting application into fields by
slicing the lines up using fixed column widths to delimit the fields.
This
was necessary to ensure that a couple of the fields that had free-form
"comments" with variable spacing. If there were well-defined field
delimiters I could have used awk or some other text processing tool.
Python
worked very well for cutting up the lines from the report into fields and
let me store each "record" into a list of strings. So - I have a list of
openPOs which is a list of strings.
I do this like this:
#############################################################################################################
#! /usr/bin/python
import sys, re
txtreport=open("open_pos.txt",'r')
openPOs=[]
while 1:
record = txtreport.readline() # - reads in a line of data from the
report
file
vendornum = record[:6] # - breaks out each column of the report
into fields
vendorname = record[7:40]
ordernum = record[41:47]
ordersuffix = record[48:59]
orderdate = record[60:70]
buyer = record[71:77]
partnum = record[78:100]
qty = record[101:108]
comment = record[109:135]
# - 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)
# if not the end of the file, do it again
if not record:
break
I noticed when splitting up your record line there is a character skipped
between each field. A delimiter perhaps? Then you may be interested in
the csv module. Assuming the delimiter is '|', the following code will
produce the same result in openPOs:
import csv
with open('open_pos.txt','rb') as f:
reader = csv.reader(f,delimiter='|')
openPOs = list(reader)
print openPOs
Note you may have to specify some more parameters to csv.reader depending on
your file "dialect". See the csv.Dialect class for details.
-Mark
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor