"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

Reply via email to