On 11/21/2015 10:26 AM, BartC wrote:
On 21/11/2015 10:41, vostrus...@gmail.com wrote:
Hi,
I have a file with one parameter per line:
a1
b1
c1
a2
b2
c2
a3
b3
c3
...
The parameters are lines of characters (not numbers)

I need to load it to 2D array for further manipulations.
So far I managed to upload this file into 1D array:

ParametersRaw = []
with open(file1) as fh:
     ParametersRaw = fh.readlines()
fh.close()

I tried this code based on yours:

with open("input") as fh:
    lines=fh.readlines()

rows = len(lines)//3

params=[]
index=0

for row in range(rows):
    params.append([lines[index],lines[index+1],lines[index+2]])
    index += 3

for row in range(rows):
    print (row,":",params[row])

For the exact input you gave, it produced this output:

0 : ['a1\n', 'b1\n', 'c1\n']
1 : ['a2\n', 'b2\n', 'c2\n']
2 : ['a3\n', 'b3\n', 'c3\n']

Probably you'd want to get rid of those \n characters. (I don't know how off-hand as I'm not often write in Python.)

The last bit could also be written:

for param in params:
    print (params)

but I needed the row index.

To get rid of the '\n' (lineend) characters:

with open(file1) as fh:
    ParametersRaw = [line.strip() for line in fh.readlines()]

or, more succinctly..

 with open(file1) as fh:
     ParametersRaw = [line.strip() for line in fh]

Comprehensions are your friend.

Nathan
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to