# [Tutor] Suggestions to improve this first effort?

C B Gambrell gulfgeek at gmail.com
Sat Feb 16 21:49:12 CET 2008

```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
city st
11111
.endblock
.report

.block
name 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\$ = ""
'
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
```