Extracting matrix from a text file

alex23 wuwei23 at gmail.com
Fri Aug 7 18:39:15 CEST 2009


On Aug 8, 2:19 am, bbarb... at inescporto.pt wrote:
> I am new in python, and I am running it on Mac with Smultron editor. I  
> need to read a textfile that includes numbers (in a matrix form),  
> indexes, and strings, like this:
>
> Marsyas-kea distance matrix for MIREX 2007 Audio Similarity Exchange
> Q/R     1       2       3       4       5
> 1       0       4.54592 4.36685 5.29463 3.85728
> 2       4.54592 0       3.97667 5.02151 4.64284
> 3       4.36685 3.97667 0       4.98743 4.83683
> 4       5.29463 5.02151 4.98743 0       6.04393
> 5       3.85728 4.64284 4.83683 6.04393 0
>
> So I just want to keep the matrix in the "middle" for math computations.
>
>         0       4.54592 4.36685 5.29463 3.85728
>         4.54592 0       3.97667 5.02151 4.64284
>         4.36685 3.97667 0       4.98743 4.83683
>         5.29463 5.02151 4.98743 0       6.04393
>         3.85728 4.64284 4.83683 6.04393 0
>
> I've seen and tried a lot of ways, like split or isinstance.. but  
> never get the wanted result.... does anyone have an idea, or hint?  
> Thank you once more for your help!


isinstance? Are you just randomly trying functions hoping they'll
work? :)

Untested code follows:

with open(<textfile>,'r') as textfile:
    header = textfile.next() # skip the header
    col_0_size = 8 # cos it does
    for line in textfile:
        newline = line[col_0_size:] # strip off the index column
        columns = newline.split(' ') # will give you a tuple of
strings
        one, two, three, four, five = map(float, columns) # turns the
strings into floats
        # do whatever you want to those values here

This is fairly standard text handling with Python, if you haven't
already you should really work through the Python tutorial[1],
especially the section on strings [2], and if you have, perhaps David
Mertz's 'Text Processing in Python'[3] may be of use.

1: http://docs.python.org/tutorial/
2: http://docs.python.org/tutorial/introduction.html#strings
3: http://gnosis.cx/TPiP/



More information about the Python-list mailing list