[Tutor] Create a table by writing to a text file.
Evert Rol
evert.rol at gmail.com
Wed Feb 22 14:40:16 CET 2012
> Hi,
> I have created a list of containing strings that represent distances between many different points and would like to display the results in a table.
> 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
>
> but get,
>
> 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.
> Is there a better way to do this?? My code is below.
This is always a tricky thing to go about. Nicely human-readable doesn't imply nicely machine readable. Sometimes a single space or a single tab between values/columns is more practical for a(nother) program to read, but not for humans.
So I will work from the assummption that you want it human-readable only.
In that case, have a careful read through the string formatting options: http://docs.python.org/library/stdtypes.html#string-formatting
Before the two tables there, there's a point 4 which mention a minimum field width; that'd be something you could use. Eg:
>>> print "|%20d|" % 10
| 10|
>>> print "|%20.5f|" % 12.3456789
| 12.34568|
>>>
Hopefully that gets you on the way.
Cheers,
Evert
> Thanks
> D
>
>
> # Distance between stations
>
> from dist import dist
> import matplotlib.pyplot as plt
> import numpy as np
>
>
> # Guralp GPS decimal coordinates.
> # station = [lat, lon, alt]
> UFAN = [55.2333142, -7.6770179, 78.3]
> UCRUI = [54.9846137, -8.3771698, 75.8]
> UGLEN = [54.7064869, -8.7406732, 42.4]
> UEASK = [54.2894659, -8.9583439, 9.1]
> UACH = [53.8758499, -9.9621948, 22.0]
> ULET = [53.5519317, -9.9413447, 70.4]
> UHAG = [52.9393892, -9.4344939, 22.7]
> ULOOP = [52.5809163, -9.8456417, 10.4]
> UBALF = [52.1625237, -10.4099873, 74.3]
> ULAMB = [51.7653115, -10.1531573, 13.5]
> USHE = [51.5536226, -9.7907148, 115.3]
> UGALL = [51.529665, -8.9529546, 33.4]
>
> names = ['UFAN', 'UCRUI', 'UGLEN', 'UEASK', 'UACH', 'ULET', 'UHAG', 'ULOOP', 'UBALF', 'ULAMB', 'USHE', 'UGALL']
> stations = [UFAN, UCRUI, UGLEN, UEASK, UACH, ULET, UHAG, ULOOP, UBALF, ULAMB, USHE, UGALL]
>
> distance = [[]]*len(stations)
>
>
> for i in range(0,len(stations)):
> #distance[i,0] = names[i]
> temp = []
> for j in range(0,len(stations)):
> temp.append(' '+str(dist(stations[i][0],stations[i][1],stations[j][0],stations[j][1])))
> distance[i] = temp
>
> testFile = open('testFile.txt', 'a')
> testFile.write('Stations ')
>
> for i in range(0,len(stations)):
> testFile.write(names[i]+' ')
> testFile.write('\n')
>
> for i in range(0,len(stations)):
> testFile.write(names[i]+' ')
> for j in range(0,len(stations)):
> testFile.write(distance[i][j]+' ')
> testFile.write('\n')
> testFile.close()
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list