I have a text file which contains matrix of N * M dimensions.
For example the input.txt file contains the following:
0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0,0,0 0,0,2,1,0,2,0,0,0,0 0,0,2,1,1,2,2,0,0,1 0,0,1,2,2,1,1,0,0,2 1,0,1,1,1,2,1,0,2,1
I need to write python script where in I can import the matrix.
My current python script is:
f = open ( 'input.txt' , 'r') l = [] l = [ line.split() for line in f] print l
the output list comes like this
[['0,0,0,0,0,0,0,0,0,0'], ['0,0,0,0,0,0,0,0,0,0'], ['0,0,0,0,0,0,0,0,0,0'], ['0,0,0,0,0,0,0,0,0,0'], ['0,0,0,0,0,0,0,0,0,0'], ['0,0,0,0,0,0,0,0,0,0'], ['0,0,2,1,0,2,0,0,0,0'], ['0,0,2,1,1,2,2,0,0,1'], ['0,0,1,2,2,1,1,0,0,2'], ['1,0,1,1,1,2,1,0,2,1']]
I need to fetch the values in int form . If I try to type cast, it throws errors.
Advertisement
Answer
Consider
with open('input.txt', 'r') as f: l = [[int(num) for num in line.split(',')] for line in f] print(l)
produces
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 1, 0, 2, 0, 0, 0, 0], [0, 0, 2, 1, 1, 2, 2, 0, 0, 1], [0, 0, 1, 2, 2, 1, 1, 0, 0, 2], [1, 0, 1, 1, 1, 2, 1, 0, 2, 1]]
Note that you have to split on commas.
If you do have blank lines then change
l = [[int(num) for num in line.split(',')] for line in f ]
to
l = [[int(num) for num in line.split(',')] for line in f if line.strip() != "" ]