[Tutor] positional output

Christian Witts cwitts at compuscan.co.za
Fri Nov 11 14:59:38 CET 2011


On 2011/11/11 02:59 PM, Cranky Frankie wrote:
> Thank you for your help on this. Now for "the rest of the story."
>
> I'm trying to build a script to parse IBM AIX DB2 DDL to line up the
> data types (it drives me crazy when the column data types are not
> lined up). For example, typical create table DDL might be hundreds of
> lines long but will look like this:
>
> <SNIP>

Something like this ? I left out checking for valid types etc, just 
something rudimentary to maybe point you in the right direction.


 >>> a = """COLUMN1     DECIMAL(8),
... COLUMN2           CHAR(20),
... COLUMN3                    TIMESTAMP,
... COLUMN4     INTEGER,
... COLUMN5          DATE NOT NULL WITH DEFAULT,
... COLUMN6   CHAR(40)
... """
 >>>
 >>> for line in a.splitlines():
...     newline = line.split()
...     col_name = newline[0]
...     col_type = newline[1].replace(',', '')
...     field_sep = ',' if ',' in line else ''
...     print '%-40s%s%s' % (col_name, col_type, field_sep)
...
COLUMN1                                 DECIMAL(8),
COLUMN2                                 CHAR(20),
COLUMN3                                 TIMESTAMP,
COLUMN4                                 INTEGER,
COLUMN5                                 DATE,
COLUMN6                                 CHAR(40)

If all you want to space it out nicely then .split(' ', 1) and '%-40s%s' 
% (part1, part2) should work fine for you.

-- 

Christian Witts
Python Developer

//
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111111/871d89cc/attachment.html>


More information about the Tutor mailing list