Extracting matrix from a text file

B

bbarbero

Hello to all!!

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!

Best Regards,
Bea
 
A

alex23

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/
 
M

MRAB

alex23 said:
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
[snip]
Or:
columns = line.split(' ')[1 : ]
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top