提问人:Nadeen NBY 提问时间:9/14/2023 最后编辑:PrussNadeen NBY 更新时间:9/14/2023 访问量:58
如何在 excel 文件中保存 for 函数的结果
How to save the results of a for function in an excel file
问:
我需要将此循环的所有结果保存到 excel 工作表文件中:
import itertools
def foo(l):
yield from itertools.product(*([l] * 18))
for x in foo('ATCG'):
print(''.join(x))`
我试过了这个:
import itertools
import csv
def foo(l):
yield from itertools.product(*([l] * 18))
for x in foo('ATCG'):
print(''.join(x))
outfile = open("primers.csv","w", newline = '')
writer=csv.writer(outfile)
writer.writerows(str(foo))
但它最终只保存了循环的最后一个结果
答:
1赞
Pruss
9/14/2023
#1
只在循环外创建一次编写器,否则它将完全覆盖每一行的文件。喜欢这个:
import csv
import itertools
def foo(l):
yield from itertools.product(*([l] * 4))
outfile = open("primers.csv","w")
writer = csv.writer(outfile)
for x in foo('ATCG'):
row = ''.join(x)
print(row)
writer.writerow(row)
请注意,您的循环会创建很多排列,它可能不会在非常非常长的时间内结束,并且文件会很大:
AAAAAATGTGTAAGAACT
AAAAAATGTGTAAGAACC
AAAAAATGTGTAAGAACG
AAAAAATGTGTAAGAAGA
AAAAAATGTGTAAGAAGT
评论
0赞
Nadeen NBY
9/14/2023
出于实验目的,我将函数编辑为:def foo(l): yield from itertools.product(*([l] * 2)) 这样我就可以更快地测试结果,但您的代码没有解决问题,它仍然给了我一个空的 excel 工作表文件
0赞
Pruss
9/14/2023
文件中的列应该如何排列?所有字母都在一列中?
0赞
Pruss
9/14/2023
@NadeenNBY 我已经将代码更新为我认为您想要的。它创建一个很长的 excel 工作表。
0赞
Nadeen NBY
9/14/2023
是的,我希望它们都在同一列中,如果您碰巧知道除 Excel 之外的更好方法来保存大量数据,那将非常有帮助
1赞
Pruss
9/15/2023
writer.writerow([row])
而不是将它全部放在一列中writer.writerow(row)
评论