converting pipe delimited file to fixed width

Tim Chase python.list at
Thu Mar 19 18:40:14 CET 2009

> Caveat: none of the solutions (including mine) deal with the case of
> the field being longer than the width. You might want to throw an
> exception.

Alternatively, you can just crop the results.  Tweaking MRAB's 
elegant solution:

   field_widths = [14, 6, 18, 21, 21, 4, 6]
   infile = open("input.csv")
   out = open("ouptut.csv", 'w')

   for fields in csv.reader(infile, delimiter='|'):
      padded_fields = [
        # pad, and then crop
        for field, width
        in zip(fields, field_widths)
      out.write("".join(padded_fields) + "\n")


If you want them right-justified, you can use



More information about the Python-list mailing list