Newbie Question: CSV to XML

Max Erickson maxerickson at gmail.com
Fri Jan 6 15:46:00 EST 2006


"ProvoWallis" <gshepherd281281 at yahoo.com> wrote in 
news:1136577649.277016.321890 at g49g2000cwa.googlegroups.com:

> Hi,
> 
> I'm learning more and more about Python all the time but I'm still a
> real newbie. I wrote this little script to convert CSV to XML and I 
was
> hoping to get some feedback on it if anyone was willing to comment.
> 
> It works but I was wondering if there was anything I could do better.
> E.g., incorporate minidom somehow? But I'm totally in the dark as how 
I
> would do this.
> 
> Thanks,
> 
> Greg
> 
> 
> ###
> 
> #csv to XML conversion utility
> 
> import os, re, csv
> root = raw_input("Enter the path where the program should run: ")
> fname = raw_input("Enter name of the uncoverted file: ")

consider parsing the command line to get the file to convert, ie
csvtoxml.py FILE

searching on sys.argv, getopt and optparse will give you lots of info on 
this.


> 
> for row in reader:
>      for i in range(0, len(row)):
> 
>           if i == 0:
>                output.write('\n<row>\n<entry
> colname="col%s">%s</entry>' % (i, row[i]))
>           if i > 0 and i < len(row) - 1:
>                output.write('\n<entry colname="col%s">%s</entry>' % 
(i,
> row[i]))
>           if i == len(row) - 1:
>                output.write('\n<entry
> colname="col%s">%s</entry>\n</row>' % (i, row[i]))

instead of testing for the first and last rows, just write the row
stuff in the outer loop. Untested, but it should work the same...

for row in reader:
    output.write('\n<row>')
    for i, cell in enumerate(row):
        output.write('\n<entry colname="col%s">%s</entry>' % (i,cell)
    output.write('\n</row>')


max




More information about the Python-list mailing list