Changeset 292


Ignore:
Timestamp:
Mar 16, 2013 2:41:03 PM (6 years ago)
Author:
prjemian
Message:

column output is lined up now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 1dwg/branches/v1.1/python/cansas1d_example.py

    r291 r292  
    4747        print 'SASdata name:', sd.name 
    4848    print '# points:', numPts 
    49     s  = 'Q ('+sd.Idata[0].Q.unit+')' 
    50     s += '  I ('+sd.Idata[0].I.unit+')' 
    51     s += '  Idev ('+sd.Idata[0].Idev.unit+')' 
    52     print s 
     49    columns = [ 
     50        ['Q ('+sd.Idata[0].Q.unit+')'], 
     51        ['I ('+sd.Idata[0].I.unit+')'], 
     52        ['Idev ('+sd.Idata[0].Idev.unit+')'], 
     53    ] 
    5354    for Idata in sd.Idata: 
    54         print Idata.Q.PCDATA,  Idata.I.PCDATA,  Idata.Idev.PCDATA 
     55        values = (Idata.Q.PCDATA, Idata.I.PCDATA, Idata.Idev.PCDATA) 
     56        for item, value in enumerate(values): 
     57            columns[item].append(str(value)) 
     58    print columnsToText(columns) 
    5559 
    5660 
     
    6569            s += ' (' + obj.unit + ')' 
    6670        print s 
     71 
     72 
     73def columnsToText(columns): 
     74    ''' 
     75    convert a list of column lists into rows of text 
     76     
     77    column widths will be chosen from the maximum character width of each column 
     78     
     79    :param [[str]] columns: list of column lists (all same length) 
     80    :returns str: text block, with line separators 
     81     
     82    Example:: 
     83     
     84        >>> columns = [ ['1A', '2A'], ['1B is long', '2B'], ['1C', '2C'] ] 
     85        >>> print columnsToText( columns ) 
     86        1A  1B is long  1C 
     87        2A  2B          2C 
     88     
     89    ''' 
     90    # get the largest width for each column 
     91    widths = [max(map(len, item)) for item in columns] 
     92    # left-align each column 
     93    sep = ' '*2 
     94    fmt = sep.join(['%%-%ds' % item for item in widths]) 
     95    # rows = zip(*columns) : matrix transpose 
     96    result = [fmt % tuple(row) for row in zip(*columns)] 
     97    return '\n'.join(result) 
    6798 
    6899 
Note: See TracChangeset for help on using the changeset viewer.