[Tutor] Create a table by writing to a text file.

David Craig dcdavemail at gmail.com
Wed Feb 22 16:24:19 CET 2012


Thanks everyone, was able to get what I wanted from '/t' but I'm sure 
the other formatting options will be useful in future.
@Peter
>>> a = [[]] * 3
>>> >>>  a
[[], [], []]

>>> >>>  a[0].append(42)
>>> >>>  a
[[42], [42], [42]]


you had me worried for a minute, but
a = [[]] * 3
a[0]=[1,2,3]
a
[[1, 2, 3], [], []]

On 02/22/2012 01:40 PM, Evert Rol wrote:
>> 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