Writing/parsing a fixed width file using Python

前端 未结 8 1715
清歌不尽
清歌不尽 2020-12-14 11:01

I\'m a newbie to Python and I\'m looking at using it to write some hairy EDI stuff that our supplier requires.

Basically they need an 80-character fixed width text f

8条回答
  •  离开以前
    2020-12-14 11:49

    I used Jarret Hardie's example and modified it slightly. This allows for selection of type of text alignment(left, right or centered.)

    class FixedWidthFieldLine(object):
        def __init__(self, fields, justify = 'L'):
            """ Returns line from list containing tuples of field values and lengths. Accepts
                justification parameter.
                FixedWidthFieldLine(fields[, justify])
    
                fields = [(value, fieldLenght)[, ...]]
            """
            self.fields = fields
    
            if (justify in ('L','C','R')):
                self.justify = justify
            else:
                self.justify = 'L'
    
        def __str__(self):
            if(self.justify == 'L'):
                return ''.join([field[0].ljust(field[1]) for field in self.fields])
            elif(self.justify == 'R'):
                return ''.join([field[0].rjust(field[1]) for field in self.fields])
            elif(self.justify == 'C'):
                return ''.join([field[0].center(field[1]) for field in self.fields])
    
    fieldTest = [('Alex', 10),
             ('Programmer', 20),
             ('Salem, OR', 15)]
    
    f = FixedWidthFieldLine(fieldTest)
    print f
    f = FixedWidthFieldLine(fieldTest,'R')
    print f
    

    Returns:

    Alex      Programmer          Salem, OR      
          Alex          Programmer      Salem, OR
    

提交回复
热议问题