Hi,Simon,
Thanks for your reply.It's very helpful :)
But I am sorry for my given example.Actually, my data in the arrays are
all float point datas.And I use integer in the example.The code is like
this.
(x,v,...,h are floating point number arrays)
pos=str(x)
vel=str(v)
ene=str(u)
den=str(rho)
pre=str(P)
hms=str(h)
datas=zip(pos,vel,ene,den,pre,hms)
filename=data.dat
file=open(filename,w)
for datum in datas:
print file, ' '.join(datum)
file.close()
However, the result seperate each point in floating number , but not
regard them as a whole. It's like this :
[ [ [ [ [ [
- 0 1 1 1 0
0 . . . . .
. 0 4 0 0 0
5 , 9 , , 0
9 9 3
9 0 9 1 1 7
9 . 9 . . 6
9 0 9 0 0 8
9 , 9 , , 7
9 9 5
9 0 9 1 1 ,
9 . 9 . .
9 0 9 0 0 0
9 , 9 , , .
9 9 0
9 0 9 1 1 0
9 . 9 . . 3
9 0 8 0 0 7
9 , , , , 6
8 8
, 0 1 1 1 7
. . . . 5
- 0 4 0 0 ,
0 , 9 , ,
. 9 0
5 0 9 1 1 .
9 . 9 . . 0
6 0 9 0 0 0
9 , 9 , , 3
9 9 7
2 0 9 1 1 6
4 . 9 . . 8
8 0 9 0 0 7
1 , 9 , , 5
2 9 ,
0 0 9 1 1
3 . 9 . . 0
0 0 8 0 0 .
0 , , , , 0
7 0
5 0 1 1 1 3
2 . . . . 7
, 0 4 0 0 6
, 9 , , 8
- 9 7
0 0 9 1 1 5
. . 9 . . ,
5 0 9 0 0
9 , 9 , , 0
3 9 .
9 0 9 1 1 0
8 . 9 . . 0
4 0 9 0 0 3
9 , 9 , , 7
6 9 6
2 0 9 1 1 8
4 . 9 . . 7
0 0 8 0 0 5
6 , , , , ,
0
1 0 1 1 1 0
5 . . . . .
0 0 4 0 0 0
6 , 9 , , 0
, 9 3
0 9 1 1 7
- . 9 . . 6
0 0 9 0 0 8
. , 9 , , 7
5 9 5
9 0 9 1 1 ,
0 . 9 . .
9 0 9 0 0 0
7 , 9 , , .
7 9 0
4 0 9 1 1 0
4 . 9 . . 3
3 0 8 0 0 7
6 , , , , 6
0 8
9 0 1 1 1 7
0 . . . . 5
2 0 4 0 0 ,
2 , 9 , ,
4 9 0
9 0 9 1 1 .
, . 9 . . 0
0 9 0 0 0
.
Do you have a way to work this out? Thank you very much, And sorry
again for my incorrect example.
Bei
Simon Forman wrote:
bei wrote:
Hi,
I am trying to write several arrays into one file, with one arrays in
one column. Each array (column) is seperated by space.
ie. a=[1,2,3, 4] b=[5,6,7,8] c=[9,10,11,12]
1 5 9
2 6 10
3 7 11
4 8 12
Now I use the function file.writelines(a), file.writelines(b),
file.writelines(c). And the output is a sequence of strings without
newlines between a, b ,c . Also each array stays in row other than
column.
I am a new comer to python.Any idea about this is appreciated!
Bei
Hi Bei,
file.writelines() works with lists of strings, not lists of numbers, so
I'm going to assume that a, b, and c are already lists of strings..
You can use the zip() function to change the lists in the way you want
to:
| a=['1','2','3','4']; b=['5','6','7','8']; c=['9','10','11','12']
| zip(a, b, c)
[('1', '5', '9'), ('2', '6', '10'), ('3', '7', '11'), ('4', '8', '12')]
now that you have the data for each line, you can combine them with the
string join() method:
| data = zip(a, b, c)
| for datum in data:
... print ' '.join(datum)
...
1 5 9
2 6 10
3 7 11
4 8 12
You can print to an open file object, so the above loop will do what
you need:
| f = open('output.txt', 'w')
| for datum in data:
... print f, ' '.join(datum)
...
| f.close()
| print open('output.txt').read()
1 5 9
2 6 10
3 7 11
4 8 12
I hope that helps!
Peace,
~Simon
--
http://mail.python.org/mailman/listinfo/python-list