我在将以下数组写入.txt文件时遇到问题。
这是我的代码:
for i in range(len(my_particles)):
list = []
list.append(my_particles[i].n)
for z in range(len(my_particles[i].neighbours)):
list.append(my_particles[i].neighbours[z])
#for i in range(len(list)):
print >>f, list
f.close()
这是输出:
[0, 2, 20, 91, 114, 127]
[1, 6, 24, 114]
[2, 0, 65, 73, 91, 114]
[3, 71, 91, 120]
[4, 16, 69, 104]
[6, 1, 25, 87, 100, 114]
[7, 19, 83, 111]
[9, 38, 59, 72, 76]
[11, 56, 101, 108]
[12, 86, 92, 126]
[13, 30, 79, 82, 101, 104]
[14, 78, 103, 124]
[15, 23, 44, 90, 116]
[16, 4, 97, 106, 108]
[17, 19, 85, 111]
[18, 47, 60, 68, 74]
有没有办法以这种格式打印它?
0, 2, 20, 91, 114, 127
1, 6, 24, 114
我试过了
print>>f, "".join(list)
但它不起作用,因为它是numpy64浮点列表。
答案 0 :(得分:2)
您希望首先从列表的每个成员中创建字符串。尝试
print >>f, ', '.join(map(str,list))
另外,不要将变量命名为list
!
答案 1 :(得分:1)
尝试
",".join(str(i) for i in list))
答案 2 :(得分:0)
hacky fix:
print(str(list).replace(']','').replace('[',''))
答案 3 :(得分:0)
将它们转换为字符串应该可以正常工作
print >>f, ', '.join(str(elem) for elem in my_list)
正如布里恩所说,不要打电话给你的清单list
答案 4 :(得分:0)
如果list是一个numpy数组的浮点数:
list.astype('str')
OR-您也可以使用csv快速编写np.arrays:
import csv
import numpy as np
a = np.random.uniform(0,10,size = (5,5))
writer = csv.writer(open('txtfile.txt','wb'))
writer.writerows(a)
收益txt文件:
3.55183065126,1.05649949199,5.15510365109,1.0369928554,7.66646909667
9.5145737219,1.53877245296,5.53917128683,1.55343228883,8.78227048275
5.80408228776,2.58788175555,0.502704494319,1.63833152952,3.59898531148
2.94430872526,2.42069917781,5.75920106752,2.42453222446,1.73308148034
1.9579612159,0.609573767011,3.87717828624,7.86853109668,7.41038950637
或者如果你想要整数,添加:
writer.writerows(a.astype(int))
会产生
2,0,3,4,1
9,5,4,4,3
9,7,6,4,2
3,5,7,2,0
6,0,2,7,7
答案 5 :(得分:0)
首先,在处理文件时应使用with statement,以确保它们自动关闭,即使程序遇到错误也是如此。其次,您可以将for i in range(len(my_list))
和my_list[i]
替换为for i in my_list
和i
。此外,使用名为list
的变量会覆盖内置类型列表。通常的做法是使用尾随下划线来避免这种情况。
此代码应该有效(尽管我目前没有安装Numpy来测试它)
with open("myfilename.txt","w") as f:
for i in my_particles:
list_ = []
list_.append(i.n)
for j in value.neighbours:
list_.append(j)
f.write(", ".join(str(n) for n in list_))
请注意,这将删除文件的先前内容。如果您不想这样,请在打开的函数中使用“a”打开文件,而不是“w”。