David Craig wrote:

I have been trying to write them to a text file but it is difficult to organise them into rows and columns with appropriate spacing to make it readable. I would like something like,

Stations   Station1         Station2
Station1       0.0            33.57654
Station2      33.57654       0.0
[...]
I've tried adding spaces but to some of the values (i.e. '0.0 ') but this is very messy.

Try using string formatting strings. E.g.:

print "%s %8.2f %8.2f" % ("station1", 0, 4)


will produce this output:

station1     0.00     4.00


Naturally you don't have to pass the resultant string to print. You can store it in a variable, and write it to a file:

line = "%s %8.2f %8.2f" % ("station1", 0, 4)
myfile.write(line + '\n')



The format string codes cover a lot of options. Each code starts with a % sign, and ends with a letter s, d, f, and a few others.

%s  string
%d  decimal number
%f  floating point number
%%  use a literal percentage sign
plus others

Inside the format target, you can add optional terms for the field width, number of decimal points, etc. A few examples:

%8.2f  Pad the number to a total width of 8 (or more if necessary),
       using two figures after the decimal place. The number is
       right-justified and padded on the left with spaces.


%-4.1f Pad the number to a total width of 4 (or more if necessary),
       using one figure after the decimal place. The number is
       left-justified and padded on the right with spaces.

Lots more options here:

http://docs.python.org/library/stdtypes.html#string-formatting-operations


Alternatively, if you have Python 2.6 or newer, you can use the format method:

print "{0} {1:8.2f} {2:8.2f}".format("station1", 0, 4)


will produce this output:

station1     0.00     4.00


See here for more options:

http://docs.python.org/library/string.html#string-formatting



--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to