diff options
author | Stefan Beller <stefanbeller@googlemail.com> | 2011-01-05 22:58:57 +0100 |
---|---|---|
committer | Stefan Beller <stefanbeller@googlemail.com> | 2011-01-05 23:00:10 +0100 |
commit | b514c052c006eeb8e4986bdd1f1026b132076b38 (patch) | |
tree | fc2f11025a30555dcc0578ee55e58181c55db9a9 | |
parent | 49a9808faefad09a6d1320ceeb978a18ba1d0a2b (diff) | |
download | tools-b514c052c006eeb8e4986bdd1f1026b132076b38.tar.gz tools-b514c052c006eeb8e4986bdd1f1026b132076b38.tar.bz2 tools-b514c052c006eeb8e4986bdd1f1026b132076b38.tar.xz tools-b514c052c006eeb8e4986bdd1f1026b132076b38.zip |
aligncsv: easy alignment with a script
-rwxr-xr-x | aligncsv.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/aligncsv.py b/aligncsv.py new file mode 100755 index 0000000..69e1d87 --- /dev/null +++ b/aligncsv.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +# this formats a csv file to a serious whitespace intended format. + +import os +import sys + +tabs=not True + +fname = sys.argv[1] +if not os.path.exists(fname): + print "that file doesn't exist" + exit(0); + +f=open(fname,"r"); +lines=f.readlines() +f.close(); +length=0 + +for line in lines: + length=max(length, len(line.split(","))) + +print "# number of entries =",length +additionalspaces = 5 + +#setup text array +textarray=range(len(lines)+1) +for x in range(len(lines)+1): + textarray[x] = range(length) + +for x in range(length): + textarray[-1][x] = 0 + +#find the longest entry in each line in each position +for lineno in range(len(lines)): + sp=lines[lineno].split(",") + for pieceno in range(len(sp)): + sp[pieceno] = sp[pieceno].strip() + textarray[-1][pieceno] = max(len(sp[pieceno]),textarray[-1][pieceno]) + +if tabs: + #make it divisable by 8 (tabs work then) + for pieceno in range(length): + if textarray[-1][pieceno] %8: + textarray[-1][pieceno] = ((textarray[-1][pieceno]/8) *8) +8 + +for lineno in range(len(lines)): + sp=lines[lineno].split(",") + for pieceno in range(length): + textarray[lineno][pieceno] = "" + if pieceno<len(sp): + sp[pieceno]= sp[pieceno].strip() + if pieceno<len(sp)-1: + sp[pieceno]= sp[pieceno] + "," + n=(textarray[-1][pieceno]-len(sp[pieceno])+additionalspaces) + if (tabs): + textarray[lineno][pieceno] = sp[pieceno] + textarray[lineno][pieceno] += "\t" *(n/8) + else: + textarray[lineno][pieceno] = " "*(n) + sp[pieceno] + + +fname = sys.argv[2] +if not os.path.exists(fname): + print "that file doesn't exist" + exit(0); +else: + f=open(fname,"w"); + for line in textarray[:-1]: + for piece in line: + f.write(piece) + f.write("\n") + f.close() + + + + |