Python Question

Python - formating numbers of an ascii table

I wonder why my code does not work. I want to round a two column data just with 2 numbers after decimal point. I am following at this moment the following code:

from __future__ import print_function

with open('input.dat', 'r') as f, open('output.txt', 'w') as outfile:
for line in f:
try:
line = line.strip()
columns = line.split()
vx = float(columns[0])
vy = float(columns[1])
print("{:.2f\t}".format(vx),"{:.2f}".format(vy), file=outfile)
except ValueError:
print(line, file=outfile)


The input data is like following

XY
HH
M&M
TS
1.83746 2.12131
1.12121 1.89942
1.32435 1.99443
1.65392 2.00001
1.48732 2.21773
...
...


the output should be like following:

XY
HH
M&M
TS
1.84 2.12
1.12 1.90
1.32 1.99
1.65 2.00
1.49 2.22
...
...

Answer

I think this line is wrong

print("{:.2f\t}".format(vx),"{:.2f}".format(vy), file=outfile)

The tab should be outside of the {} and I would rewrite it like this

print("{:.2f}\t{:.2f}".format(vx, vy), file=outfile)
Comments