I am just getting started with Python and wonder if folks here might
look at this attempt in Python and offer me your thoughts.

Several years ago I used QBasic to convert one our reports to a csv
file so we could import the data into another program.  That very old
QBasic script has been serving me well but I decided to try to make it
work in Python.  I used the same logic in Python I had used in QBasic
and the resulting output is exactly what I need.

Here is how the data looks in the input file.

=====
=====
.block
  name 1
  address1
  city st
  11111
.endblock
.report


.block
  name 2
  address 2
  city st
  11111
.endblock
.report
====
====

The input file goes on for several thousand addresses.

Here is what worked for me in QBasic.

===
===
clin1$ = ""
clin2$ = ""
infile$ = "ad.txt"
outfile$ = "ad.csv"
'
OPEN infile$ FOR INPUT AS #1
OPEN outfile$ FOR OUTPUT AS #2
'
DO WHILE NOT EOF(1)
        LINE INPUT #1, lin$
        clin1$ = RTRIM$(LTRIM$(lin$))
        IF clin1$ = "" THEN
                clin1$ = ""
        ELSEIF clin1$ = ".report" THEN
                clin1$ = ""
        ELSEIF clin1$ = ".block" THEN
                clin1$ = ""
        ELSEIF clin1$ = ".endblock" THEN
                WRITE #2, MID$(clin2$, 4)
                PRINT MID$(clin2$, 4)
                clin2$ = ""
        ELSE
                clin2$ = clin2$ + CHR$(34) + CHR$(44) + CHR$(34) + clin1$
        END IF
LOOP
END
====
====

And here is my I got work for me in Python.

===
===
import sys
infile=sys.argv[1]
outfile=sys.argv[1]+".csv"

f1=open(infile)
f2=open(outfile, 'w')

s2=""

for line in f1:
        s=line.strip()
        if s=="":
                continue
        elif s==".block":
                continue
        elif s==".report":
                continue
        elif s==".endblock":
                s="\n"
                s2=s2[:-1]+s
                f2.write(s2)
                s2=""
                continue
        s2=s2+"\""+s+"\""+","   

f1.close()
f2.close()
===
===

The script works but what you suggest to improve the logic or make the
script more Pythonic?

Thanks for this list.  I am enjoying reading and learning from the
many conversations here.

Charles
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to